黑马程序员技术交流社区
标题:
break的问题.
[打印本页]
作者:
王峰230321
时间:
2013-7-26 17:48
标题:
break的问题.
本帖最后由 王峰230321 于 2013-7-26 19:42 编辑
为什么 . 这个 over 不会 break?
在下面加上else 就可以 但是 不加 else 就不行. 这个 还会影响到 break吗?
import java.io.*;
public class JAVAjiaqiang
{
public static void main(String[] args)throws Exception
{
InputStream in=System.in;
StringBuffer sb=new StringBuffer();
int num=0;
q:while(true)
{
num=in.read();
if(num=='\r')
continue;
if(num=='\n')
{
String st=sb.toString();
System.out.println(st.toUpperCase());
sb.delete(0,sb.length());
if("over".equals(st))
break;
}
sb.append((char)num);
}
}
}
作者:
王峰230321
时间:
2013-7-26 18:20
求解!!!!!
作者:
薛淑凯
时间:
2013-7-26 19:13
你不写else的话,\r\n也被添加到stringbuffer里了,造成往后的每次结果都多一个换行,程序就停不住了
作者:
lljwdbklb
时间:
2013-7-26 19:18
String st=sb.toString().trim();
你把这条改成这样看看
主要是你多了个换行
作者:
王磊
时间:
2013-7-26 19:20
package test;
import java.io.*;
public class test1
{
public static void main(String[] args)throws Exception
{
InputStream in=System.in;
StringBuffer sb=new StringBuffer();
int num=0;
while(true)
{
num=in.read();
if(num=='\r')
{
continue;
}
if(num=='\n')
{
String st=sb.toString();
System.out.println(st.toUpperCase());
System.out.println(st);
sb.delete(0,sb.length());
//下边不加else,用这个代码就能说明问题,
//判断跳出循环的格式应该为这样:"\nover"
if("\nover".equals(st))
break;
}
//每次输出换行后,该代码仍然后执行到,
//相当于在字符串容器的首位存放了一个\n
sb.append((char)num);
}
}
}
复制代码
不加else,可以通过这样来说明问题,结束标记的字符串定义错误。
作者:
王峰230321
时间:
2013-7-26 19:21
薛淑凯 发表于 2013-7-26 19:13
你不写else的话,\r\n也被添加到stringbuffer里了,造成往后的每次结果都多一个换行,程序就停不住了 ...
嗯. 我已经弄明白了 . 好长时间 没人回复.. 编码 像这么写的 . 如果 over在第一行的时候 还能认出来 .
但是 如果 是在下面. 就是 每一次 字母前面 都会多一个 newLine.. 也就跟over匹配不上了.
作者:
a2213502
时间:
2013-7-26 19:26
恩 我也学习了东西,谢谢啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2