我正在尝试通过System.in.read()输入整数值。 但是当我读取它的值时,它给出了不同的输出49为1,50为2&所以
int e=(int)System.in.read(); System.out.print("\n"+e);
答案 0 :(得分:2)
因为字符1
(即char ch = '1'
)具有ASCII代码49
(即int code = '1'
为49
)。
System.out.println((int)'1'); // 49
要修复您的考试,只需减去0
的代码:
int e = System.in.read() - '0';
System.out.println(e); // 1
答案 1 :(得分:1)
答案 2 :(得分:1)
正如其他答案所提到的,如果没有要读入的输入,System.in.read()
会以int
或-1
的形式读取单个字符。这意味着字符读取in System.in.read()
将int
表示读取字符的ASCII值。
要读取System.in
中的整数,可能更容易使用Scanner
:
Scanner s = new Scanner(System.in);
int e = s.nextInt();
System.out.print("\n"+e);
s.close();
或者,如果您希望坚持使用System.in.read()
,可以使用Integer.parseInt(String)
从System.in.read()
获取字符输入的整数:
int e = Integer.parseInt("" + (char) System.in.read());
System.out.print("\n"+e);
如果输入不是数字, Integer.parseInt(String)
会抛出一个NumberFormatException
。