尝试输入整数值时,System.in.read()行为不正常

时间:2018-06-10 20:58:35

标签: java input

  

我正在尝试通过System.in.read()输入整数值。   但是当我读取它的值时,它给出了不同的输出49为1,50为2&所以int e=(int)System.in.read(); System.out.print("\n"+e);

3 个答案:

答案 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)

您正在阅读带有功能的字符

  

System.in.read()

您可以看到System.in.read()here的使用。另请查看here如何阅读用户的值。

答案 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