我使用此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! 这个问题的原因是什么,我该怎么解决呢。
答案 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);