我正在尝试通过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
如果输入不是数字,你可以抓住。