黑马程序员技术交流社区
标题:
问个键盘录入的问题
[打印本页]
作者:
华谦
时间:
2014-8-17 19:25
标题:
问个键盘录入的问题
当第一次运行程序的时候,dos命令行第一次输入over就可以退出程序,
为什么第一次输入其他第二次再输入over的时候不退出呢?我也对sb清零了呀?哪里的问题
/*
读取键盘录入
System.out:对应的是标准输出设备,控制台
System.in:对应的是标准输入设备,键盘
需求:
通过键盘录入数据,当录入一行数据后,就将该数据进行打印
如果录入的数据时over,那么就停止录入
*/
import java.io.*;
class ReadIn
{
public static void main(String[] args) throws IOException
{
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
while(true)
{
int ch = in.read();
if(ch=='\r')
continue;
if(ch=='\n')
{
String s = sb.toString();
if(s.equals("over"))
break;
System.out.println(s+"长度:"+sb.length());
sb.delete(0,s.length());
}
sb.append((char)ch);
}
}
}
复制代码
作者:
yuli2039
时间:
2014-8-17 21:01
你只在读,没看你将读到的信息写入StringBuilder
作者:
华谦
时间:
2014-8-17 21:22
yuli2039 发表于 2014-8-17 21:01
你只在读,没看你将读到的信息写入StringBuilder
那为什么第一次读到了呢??很郁闷
作者:
ssy1939
时间:
2014-8-17 22:20
问题一,接收输入的时候怎么用 int ? 问题二 , sb里面都没东西,怎么能打印?问题三,把sb的添加放最下面能有用?
作者:
fantacyleo
时间:
2014-8-17 22:30
楼主你的问题在于sb.append((char)ch);之前要加一个else,否则当读到'\n'、打印、删除之后,就会继续执行sb.append((char)ch);把'\n'也放进sb中了,所以下次你再输入over,sb中存的是"\nover",当然不等于"over"
作者:
伍建雄
时间:
2014-8-17 22:46
我之前也碰到这样的问题,加个else就对了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2