【发布时间】:2021-02-05 05:06:25
【问题描述】:
下面的代码采用n 输入(-1 退出)。对于每个输入,用户输入以空格分隔的每小时英里数和所在小时数的字符串。随着新数据的输入,小时数会增加。
示例输入:
1
20 2
30 6
10 7
-1
示例输出:
170 miles (20*2 + 30*(6-2) + 10*(7-6))
代码:
package mypackage;
import java.io.*;
public class SpeedLimit {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
while (n != -1) {
int miles = 0;
int hours = 0;
for (int i = 1; i <= n; i++) {
String s = reader.readLine();
String[] parts = s.split(" "); // mph hrs
miles += Integer.parseInt(parts[0]) * (Integer.parseInt(parts[1]) - hours);
hours += Integer.parseInt(parts[1]);
}
System.out.println(miles + " miles");
n = Integer.parseInt(reader.readLine());
}
}
}
我收到错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "30 6"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at changemyname.SpeedLimit.main(SpeedLimit.java:21)
这怎么可能?
【问题讨论】:
-
您有两个使用
n作为结束条件的循环。外部循环重复直到n为 -1,内部循环从 1 重复到n。