第二题 循环输出等腰三角形
public class Tower {
public void draw(int len)
{
//先画每一行
for(int i=0;i<len;i++)
{
//空格
for(int k=0;k<len-i-1;k++)
{
System.out.print(" ");
}
//星号
for(int j=0;j<2*i+1;j++)
{
System.out.print("*");
}
//换行
System.out.print('\n');
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Tower tow=new Tower();
tow.draw(9);
}
}
第四题 按字节截取字符串
我自己写的代码如下,代码的问题是不满足题设的汉字要求为两个字符
public class SubStr {
//private String[] str;
private String result;
public String DoSubStr(String str,int i,int len)
{
result="";
//用charAt每次返回一个char字节存在String里面
//从i 开始,截取长度为len
for(int k=0;k<len;k++)
{
char temp=str.charAt(i);
result+=temp;
i++;
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SubStr subStr1=new SubStr();
String result=subStr1.DoSubStr("A锅ASJJA", 1, 2);
System.out.println(result);
}
}
因此去网络上查找别的人的代码,发现一个可以将汉字找出来的办法。
用到的方法有
string.valueOf();这个可以吧obj转换成string类型
在“GBK”中汉字编码为2个字节 可以和英文进行区分
string.valueOf(c).getBytes("GBK").length
因此,修改之后的代码
import java.io.UnsupportedEncodingException;
public class SubStr {
//private String[] str;
private String result;
public String DoSubStr(String str,int i,int len)
throws UnsupportedEncodingException
{
/*if(str!=null&&!"".equals(str))
{
str = new String(str.getBytes(),"GBK");
}
*/
result="";
//用charAt每次返回一个char字节存在String里面
//从i 开始,截取长度为len
for(int k=0;k<len;k++)
{
char temp=str.charAt(i);
if(SubStr.isChineseChar(temp))
{
result+=temp;
i=i+1;
len=len-1;
}else
{
result+=temp;
i++;
}
}
return result;
}
//增加判断是否是汉字的方法
public static boolean isChineseChar(char c)
throws UnsupportedEncodingException
{
return String.valueOf(c).getBytes("GBK").length>1;
}
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
SubStr subStr1=new SubStr();
String result=subStr1.DoSubStr("我ZWR爱JAVA", 0, 6);
System.out.println(result);
}
}
p.s 昨天我的电脑放在教室里被一个小偷偷走了。so....第六题的代码随着电脑一起丢了(我昨天敲了一下去才敲出来的结果... 伤痛欲绝).....so我要接着往下学第五章啦~~~