代码:
我有TriangleSummer
个类,该类具有类变量
static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
我的主要功能是
public static void main(String args[]) throws IOException {
int noOfTestCases = Integer.parseInt(reader.readLine());
for(int i=0;i<noOfTestCases;i++){
int noOfEntries = Integer.parseInt(reader.readLine());
System.out.println(computeMaxSum(noOfEntries));
}
}
我的computeMaxSum()
方法的相关部分是
public static int computeMaxSum(int noOfEntries) throws IOException {
int[][] triangle = new int[noOfEntries][noOfEntries];
for(int j=0;j<noOfEntries;j++){
int k=0;
for(String str : reader.readLine().split(" ")){
triangle[j][k] = Integer.parseInt(str);
k++;
}
}
//further logic nothing to do with I/O
}
最后是堆栈跟踪是
Exception in thread "main" java.lang.NumberFormatException: For input string: "4 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at Matrices.TriangleSummer.main(TriangleSummer.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
用于输入
2
3
1
2 1
1 2 3
4
1
1 2
4 1 2
2 3 1 1
所以我在读取第6行,即第4行的值4时遇到了NumberFormatException
int noOfEntries = Integer.parseInt(reader.readLine());
。而且我完全不知道为什么?
java.lang.NumberFormatException: For input string: "4 "
似乎末尾有空格。在传递到trim()
]之前先执行Integer.parseInt(str);
使用String#trim()
从字符串“ 4”中删除空格
此人将删除您的空格