黑马程序员技术交流社区
标题:
帮忙看看程序问题,谢谢
[打印本页]
作者:
杨芳
时间:
2013-2-2 14:01
标题:
帮忙看看程序问题,谢谢
本帖最后由 张向辉 于 2013-2-4 21:58 编辑
/*
读取键盘录入。
System.out:对应是标准输出设备。控制台
System.in:对应是标准输入设备。键盘。
需求:
通过键盘录入数据。
当录入一行数据后,就将该行数据进行打印,
如果录入的数据是over,那么停止录入。
*/
import java.io.*;
class ReadIn
{
public static void main(String[] args) throws IOException
{
InputStream in=System.in;
//int by=in.read();
//System.out.println(by);
/*
int ch=0;
while((ch=in.read())!=-1)
{
System.out.println(ch);
}
*/
StringBuilder sb=new StringBuilder();
while(true)
{
int ch=in.read();
sb.append((char)ch);
if(ch=='\r')
continue;
if(ch=='\n')
{
String s=sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
//sb=new StringBuider();
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
in.close();
}
}
输入“Over"停不下来????
作者:
胥文
时间:
2013-2-2 15:16
package cn.itcast.day1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Over {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
String line;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
System.out.println(line);
}
bufr.close();
}
}
这样写就OK了
你这个程序在判断over的时候只是跳出了if,外面还有while(true)怎么停的下来
作者:
苏克
时间:
2013-2-2 16:35
while(true)
{
int ch=in.read();
sb.append((char)ch);
if(ch=='\r')
continue;
if(ch=='\n')
{
String s=sb.toString();
//System.out.println(s);
if("over\r\n".equals(s){
// System.out.println("hhhhhhh");
break;
}
System.out.println(s.toUpperCase());
//sb=new StringBuider();
sb.delete(0,sb.length());
}
// else
// sb.append((char)ch);
}
in.close();
找了好久才找到错误,因为的你的字符串S中连回车符搞进去了,所以判断的时候,l是不想等的。这样写 if("over\r\n".equals(s){
就可以退出了。
作者:
苏克
时间:
2013-2-2 16:49
public static void main(String[] args) throws IOException
{
InputStream in=System.in;
//int by=in.read();
//System.out.println(by);
/*
int ch=0;
while((ch=in.read())!=-1)
{
System.out.println(ch);
}
*/
StringBuilder sb=new StringBuilder();
while(true)
{
int ch=in.read();
// sb.append((char)ch); 将这句话去掉就可以了,只是在下面添加,在上面添加会吧回车见加进去。
if(ch=='\r')
continue;
if(ch=='\n')
{
String s=sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
//sb=new StringBuider();
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
in.close();
}
}
作者:
杨浩
时间:
2013-2-2 17:50
你可以用BufferedReader bufr = new BufferedReader(new InputStreamReader(System.out));
这样可以直接用bufr.readline();读取到的是字符串。
这样就不用考虑回车符咯
还有,跳出到最外层,可以给循环做个标记 比如 A:后面就是循环
然后在需要跳出的时候 break A;
作者:
铿锵科技
时间:
2013-2-2 22:40
上面的答得不错顶个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2