Java输入返回不正确的值

时间:2014-05-31 15:03:03

标签: java

我使用此official example接收用户的输入,然后将其打印出来:

import java.io.IOException;

    public class MainClass {

      public static void main(String[] args) {
        int inChar;
        System.out.println("Enter a Character:");
        try {
          inChar = System.in.read();
          System.out.print("You entered ");
          System.out.println(inChar);
        }
        catch (IOException e){
          System.out.println("Error reading from user");
        }
      }
    }

问题是,它总是返回不正确的值。例如,当输入10时,它返回49,而我希望返回10! 这个问题的原因是什么,我该怎么解决呢。

3 个答案:

答案 0 :(得分:2)

如果要打印角色,将其int

,则返回角色的char
System.out.println((char) inChar);

这只会打印输入的第一个字符的值,因为System.in.read()只读取第一个字节。

要阅读整行,您可以使用Scanner

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Write something:");
        // read input
        String line = scanner.nextLine();
        System.out.print("You entered ");
        System.out.println(line);
      }
}

答案 1 :(得分:0)

  

System.in.read只读取输入流中的第一个字节

所以如果你输入

  

123

第一个字符是1.所以它对应的ASCII是49

如果我们输入

  

254

第一个字符是2.所以它对应的ASCII是50

编辑:这也解释了here

答案 2 :(得分:0)

试试这个代码段。

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader brInput = new BufferedReader(isr);
String strInput = brInput.readLine();
System.out.println("You wrote "+strInput);