黑马程序员技术交流社区
标题:
求助啊,不解!
[打印本页]
作者:
马云
时间:
2012-3-21 14:30
标题:
求助啊,不解!
import java.io.IOException;
import java.io.InputStream;
public class SplitDemo {
public static void main(String[] args) throws IOException {
InputStream in=System.in;
StringBuilder sb=new StringBuilder();
while(true){
char ch=(char)in.read();
//if(ch!='\r'&&ch!='\n') 代码在这里写就没问题
// sb.append(ch);
if(ch=='\r')
continue;
if(ch=='\n'){
String s=sb.toString();
if(s.equals("over"))
{
sb.delete(0, sb.length());
break;
}
System.out.println(s);
sb.delete(0, sb.length());
ch=0;
}
sb.append(ch); <但是写在这里就不行了>
//System.out.println("append end:"+sb.toString());
}
}
}
帮帮忙讲明白吧!
作者:
谢明
时间:
2012-3-21 14:39
本帖最后由 谢明 于 2012-3-21 15:18 编辑
sb.append((char)ch);
这句之前少写了else
所以你判断了 /r/n 以后 还是执行了
sb.append((char)ch);
应该是加入了 /n
这样的话 你下次输出的就是/n+你输入的字符了
_____________________________________
刚刚才看见 加了ch=0 是想清空 ch吧
但是很明显不成功啊 呵呵{:soso_e113:}
ASCII值0代表null 表示字符串结束 不可输入
你写成 ch=49
你就发现 下面的输出都加个1了
这样做就好理解些
作者:
田斌
时间:
2012-3-21 14:55
import java.io.IOException;
import java.io.InputStream;
public class SplitDemo {
public static void main(String[] args) throws IOException {
InputStream in=System.in;
StringBuilder sb=new StringBuilder();
while(true){
char ch=(char)in.read();
//if(ch!='\r'&&ch!='\n') 代码在这里写就没问题
// sb.append(ch);
//在这里缺省了if的大括号,一般要添上
if(ch=='\r')
continue;
if(ch=='\n'){
String s=sb.toString();
if(s.equals("over"))
{
sb.delete(0, sb.length());
break;
}
System.out.println(s);
sb.delete(0, sb.length());
ch=0;
}else
//切记加else,over功能无法实现
sb.append(ch); <但是写在这里就不行了>//他不在if(ch!='\r'&&ch!='\n')的循环里
//System.out.println("append end:"+sb.toString());
}
}
}
作者:
OMG
时间:
2012-3-21 15:04
逻辑出错了:
问题:如果字符串已经等于over,你觉得还需要执行 sb.append(ch); 语句吗?
不需要了,所以需要加个else,以表示上面都不符合条件时运行该语句;
哥们,if语句需要加强理解啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2