【发布时间】:2016-02-03 08:32:47
【问题描述】:
我正在尝试编写一个简单的程序。我正在尝试获取两个用户输入,第一个是 char 类型,第二个是整数类型。我正在使用 BufferedReader 来获取用户输入。但是,当我按下回车键时从用户那里获取字符输入后,它会抛出错误。
Please enter your sex: m
Please enter your code: Please enter your salary: Exception in thread "main" jav
a.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at classtest.main(classtest.java:24)
令我惊讶的是,如果我先输入整数然后输入字符,那么它不会给出任何错误。但是,如果我先输入字符然后输入整数,那么它会给出错误。一旦我按下回车键,它就会抛出错误。它甚至没有要求第二次输入。它将输入视为“”。
这是我的代码。
import java.io.*;
import java.util.*;
public class classtest
{
public static void main(String[] args) throws IOException
{
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
int empcode;
char sex;
System.out.print("Please enter your sex: ");
sex=(char)System.in.read();
System.out.print("Please enter your code: ");
empcode=Integer.parseInt(br.readLine());
System.out.print("Code: " +empcode);
System.out.print("Sex: " + sex);
}
}
【问题讨论】:
-
请注意,
InputStream.read()返回的是byte,而不是char。如果你想要一个char,你应该把它包裹在一个InputStreamReader中。 -
NumberFormatException:对于输入字符串:“”是一条足够清晰的消息。你有什么不明白的。
标签: java bufferedreader