[英]Unknown output by System.out.println
我正在学习Java,在学习try catch循环时,我遇到了这种奇怪的行为。
无论我向下面的代码提供什么数字,它返回49-53之间的东西。
public class demo{
public static void main(String[] args) {
System.out.println("Enter a number");
try{
int num = System.in.read();
System.out.println(num);
}catch(Exception e){
e.printStackTrace();
}
}
}
您必须输入数字1-5。 InputStream
的read()
方法 ( System.in
是一个InputStream
)将字节值作为int
返回,但该值是Unicode代码。 字符'1'
到'5'
由代码49-53表示。 实际上, '0'
到'9'
由代码48-57表示。
不要直接在InputStream
上调用read
。 它适用于低级流处理。 而是将InputStream
包装在Scanner
并调用nextInt()
。
InputStream.read()返回一个整数。 你应该做char c =(char)myInt; 如果这是你想要的,将它转换为一个角色
InputStream.read()只读取下一个数据字节:
http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read()
如果您需要一次读取超过1个字节的数据,请尝试使用BufferedInputStream: http : //docs.oracle.com/javase/7/docs/api/java/io/BufferedInputStream.html或读者: https : //docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html
谨防简单地将InputStream.read生成的int转换为char - 只有在您的字符集是ISO-8859-1时它才会起作用。 因此,具有适当Charset的Reader是一个不错的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.