我真的是Java的新手,并且我一直在遵循有关如何阅读用户输入的书籍教程。他们的代码是...
class Example {
public static void main(String args[]) throws java.io.IOException {
// System.out.println()
char ch;
System.out.print("Press a key followed by ENTER: ");
ch = (char) System.in.read();
System.out.println("Your key is: " + ch);
}
}
我试图进行实验,并以这样的整数形式读取用户输入...
class Example {
public static void main(String args[]) throws java.io.IOException {
int foo;
System.out.print("Enter a number: ");
foo = (int) System.in.read();
System.out.print("Your number was: " + foo);
}
}
但是,在输入数字12时,我得到的输出为49。为什么?那本书教程如何运作?
编辑:当我在程序中输入'w'时,它仍然打印出119。我当然认为抛出问题正在处理吗?还是不是?
什么是扫描仪(在评论中看到了它)?
答案 0 :(得分:0)
System.in.read()
从输入流中读取下一个数据字节。
因此,您只是从输入中读取1
,并且正在打印1
的ASCII代码49
。如果要显示字符,则应将其读取为char或将其转换:
System.out.print("Your number was: " + (char) foo)
答案 1 :(得分:0)
但是,在输入数字12时,输出为49。 是吗?
之所以得到49,是因为您仅读取输入的第一个字符(程序仅读取“ 1”数字)。 ASCII值1令人惊讶地等于49。
我建议这样使用Scanner
对象从System.in
读取输入。
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
此方法将填充'sentence'
字符串,并在控制台中输入整行。
如果您需要数字而不是字符串,请使用Integer.valueOf(yourString);