首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

InputStream

2012-04-26 
InputStream求助Java codepublic class TestSystemIn {public static void main(String[] args) throws IO

InputStream求助

Java code
public class TestSystemIn {    public static void main(String[] args) throws IOException{        InputStream is=System.in;        System.out.println("1="+(char)is.read());        System.out.println("2="+(char)is.read());    }}



输入:A
结果是:
1=A
2=

2为什么没有等待输入直接输出了?
怎样才能输出1以后等待2输入再显示2啊


[解决办法]
应该是is只会接受一次输入吧,所以第一次读的时候是A,再往下读就没有了,是“”,所以显示2=
不过我一般习惯用这个,效果跟你一样,把System.in包装下
Java code
import java.io.*;import java.util.Scanner;public class TestSystemIn {    public static void main(String[] args) throws IOException{//        InputStream is=System.in;        Scanner in = new Scanner(System.in);        System.out.println("1="+in.next());        System.out.println("2="+in.next());    }}
[解决办法]
你在控制台输入a,然后回车,其实是两个字符:a和回车符。lz去掉第二个read的转型,改成 "2="+is.read();
你就会看到输出2=13,对照ascii表一看,正好是控制字符cr。所以,你可以将in包装成带缓冲的字符流,然后使用readLine()就行了:

Java code
BufferedReader is =new BufferedReader(new InputStreamReader(System.in));System.out.println("1="+is.readLine());
[解决办法]
嗯,2楼说的对,是回车的原因!
[解决办法]
用Scanner或者BufferedReader包装下吧
二楼正解
[解决办法]
二楼正解 +1
[解决办法]
public class TestSystemIn {
public static void main(String[] args) throws IOException{
InputStream is=System.in;
System.out.println("1="+(char)is.read());
System.out.println("2="+(char)is.read());
}
}
输入AB就得到 1=A,2=B了。

热点排行