问题描述
我正在尝试为本地Java挑战输入权重文件,考虑每行中权重的总和是否低于5磅的权重限制。它产生一个NumberFormatException
。有什么想法吗?
import java.util.*;
import java.io.*;
import static java.lang.System.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(new File("postofficedat.txt"));
int lines = Integer.parseInt(input.nextLine());
for (int i = 0; i < lines; i++) {
double sum = .4;
for (int x = 0; x < 7; x++) {
sum = sum + input.nextDouble();
}
if (sum < 5) {
System.out.println("OK");
} else {
System.out.println("OVERWEIGHT");
}
if (i < lines - 1) {
input.nextLine();
}
}
input.close();
}
}
这是输入文件,第一行是行数,后几行是权重:
3
1.21 0.33 1.42 0.90 0.45 1.30 0.30
1.20 0.59 1.23 0.99 0.05 0.10 0.07
0.62 0.61 0.63 0.64 0.65 0.66 2.67
这是错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "3"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Main.main(Main.java:27)
解决方法
您正在尝试使用Scanner
获取整数。 Scanner
提供了几种方便的方法,可让您阅读各种类型的内容。
.nextLine()
将尝试以字符串形式在下一行读取,如果您想将其作为int
您可以使用方法.nextInt()
提取下一个整数。