下面的代码接受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)这怎麽可能?
发布于 2021-02-05 13:16:36
请仔细查看您的循环的条件,以及您是如何接受输入的。
就空间分隔的输入而言,它们之间可能有多个空间。
试试这个:
String[] parts = s.split("\\s+");这将分割任意数量的连续空格。
发布于 2021-02-05 13:54:00
我检查并运行了你的代码,它工作得很好。
integer值。int n= Integer.parseInt(reader.readLine());
如果有空格,那么就会出现错误,因为您不能将带空格的String转换为int。因此,它绝对应该是一个没有空格或任何其他非数值的值。
例如:
32 -正确
24 5-错误
3h错误..。
While loop将检查该值是否等于-1,如果不等于,则进入for loop。它再次要求用户输入values.的对
例如:
12 3
15 8
循环将重复n次。(n是您之前输入的值。)
然后,你的程序将显示总里程数。,
n值,并重复这个过程。应输入-1退出循环并编程。我想你在输入数值时犯了一些错误。确保以适当的方式输入值。
https://stackoverflow.com/questions/66057843
复制相似问题