System.in.read() 在尝试输入整数值时行为异常



我正在尝试通过System.in.read((输入整数值。 但是当我读取值时,它会给出不同的输出 49 表示 1,50 表示 2,依此类推int e=(int)System.in.read(); System.out.print("n"+e);

因为字符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

你正在阅读带有函数的字符

System.in.read((

你可以在这里看到System.in.read((的使用。另外,请在此处查看如何从用户读取值。

正如其他答案所提到的,System.in.read()int的形式读取单个字符,如果没有输入可以读入,则-1。这意味着读入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如果输入不是数字,你可以抓住。

相关内容

最新更新