读取用户输入

时间:2018-12-27 13:41:17

标签: java

我真的是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。我当然认为抛出问题正在处理吗?还是不是?

什么是扫描仪(在评论中看到了它)?

2 个答案:

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

将该字符串解析为一个整数