java中不能用System.in构造一个DataInputStream的流么?谁能帮忙看下,谢谢。有图
就是想把我输入再输出一遍,但这么做貌似不行。后来我试了别的方法:BufferedReaderbr=newBufferedReader(newInputStreamRead...
就是想把我输入再输出一遍,但这么做貌似不行。
后来我试了别的方法:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
之后用br.readLine();就可以读出来。谁能帮我解释下图中代码哪里错了? 展开
后来我试了别的方法:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
之后用br.readLine();就可以读出来。谁能帮我解释下图中代码哪里错了? 展开
1个回答
展开全部
DataInputStream dis = new DataInputStream(System.in);
byte[] buf = new byte[1024];
int len = 0;
while((len=dis.read(buf))!=-1) {
String s = new String(buf,0,len);
System.out.print(s);
}
上面这段代码,尽量别输入中文,而且没有停止的方法,要你按那个红色的正方形按钮才能停止,所以很不方便。如果用BufferedReader类来包装的话,就不会出现这些问题。
一般你用键盘输入都要用字符流来包装,因为可能会输入中文。而你用的DataInputStream不仅是个字节流,而且还是用来操作java里的基本数据类型的,根本不适合用在这里。
byte[] buf = new byte[1024];
int len = 0;
while((len=dis.read(buf))!=-1) {
String s = new String(buf,0,len);
System.out.print(s);
}
上面这段代码,尽量别输入中文,而且没有停止的方法,要你按那个红色的正方形按钮才能停止,所以很不方便。如果用BufferedReader类来包装的话,就不会出现这些问题。
一般你用键盘输入都要用字符流来包装,因为可能会输入中文。而你用的DataInputStream不仅是个字节流,而且还是用来操作java里的基本数据类型的,根本不适合用在这里。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询