黑马程序员技术交流社区
标题:
关于键盘录入的问题
[打印本页]
作者:
我为你着迷
时间:
2014-5-19 19:27
标题:
关于键盘录入的问题
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("over".equals(s))
break;
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
}
}
复制代码
大家好,我有2个问题啊,麻烦帮忙解答一下疑惑,首先说声谢谢。
第一个问题就是这句话InputStream in=System.in;看起来很别扭,感觉怪怪的,所以有点蒙。
第二个问题就是这句话if("over".equals(s))是什么意思啊!
作者:
skill20
时间:
2014-5-19 19:44
第一个问题:System.in 的返回值类型是InputStream。
第二个问题:当键盘输入over时就让程序停下来,若没结束标记,read会一直等。
作者:
SyouRai_Tsk
时间:
2014-5-19 19:45
1.输入流为键盘输入
2.要有结束标识
作者:
周俊波
时间:
2014-5-19 19:58
InputStream in=System.in;//拿到键盘输入流
if("over".equals(s))//当输入over时候break循环结束,这里是倒着写的,因为这样可以排除s为null时抛出空指针异常
作者:
不似侽紸角.
时间:
2014-5-19 20:32
第一个问题就是这句话InputStream in=System.in;看起来很别扭,感觉怪怪的,所以有点蒙。
System.in 是一个字段 相当与输出流
static InputStream
“标准”输入流。
第二个问题就是这句话if("over".equals(s))是什么意思啊!
就是 当键盘录入的是“over”就结束键盘录入
作者:
波涛
时间:
2014-5-19 20:51
本帖最后由 波涛 于 2014-5-19 20:53 编辑
1: 我们通过System.in得到的不是一个直接的InputStream对象,InputStream类本身为abstract的,你也不可能创建出这个类的一个对象来,实际上,我们通过System.in得到的是某一个InputStream的子类的对象,这就是java中多态的概念,即父类的变量可以引用子类的对象。查看一下java的源文件就可以知道这个in是通过native code得到的,所以你不用过分关心它到底是什么类型的,只要知道它就是一个InputStream类的子类的对象,我们可以通过它使用所有InputStream类的方法就可以了。
2: String类有一个equals方法,用来判断该字串内容是否于其他字串相等;这里是说当接收得到的字符串是“over”时,然后。。。。。
作者:
wyqs92
时间:
2014-5-19 21:58
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("over".equals(s))//第二个问题:这里是判断你输入的字符串是否是over,如果是,就录入结束。
break;
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
}
}
复制代码
第一个问题:因为in 是标准输入流,它所对应的类型是inputstream,所以system.in表示的是获取键盘录入。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2