使用BufferedReader读取多行整数时发生java错误
我得到一个例外:
Exception in thread "main" java.lang.NumberFormatException: For input string: "55 45 65 88 "
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.valueOf(Unknown Source)
使用此代码时:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int noOfStudents = Integer.parseInt(line); //firstline contains 1 integer.
ArrayList <Integer> marks = new ArrayList<Integer>();
line = br.readLine(); //second line contains a line of integers
StringTokenizer tokens = new StringTokenizer(line, "\\s+");
// to break the line into tokens
while (tokens.hasMoreTokens())
{
marks.add(Integer.valueOf(tokens.nextToken())); //error here
//when I am converting tokens into integers its giving error
}
样本输入:
4
55 45 65 88 (here, when I press enter it gives me the above stated errors)
# 1 楼答案
StringTokenizer
不支持正则表达式用这个代替
Edit:正如@MasterOdin所指出的,
StringTokenizer
的默认分隔符是一个空格" "
。因此,下面的方法也同样适用# 2 楼答案
您可以选择以下简单方法:
编辑:根据T.G