首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单的里程算法-抛出奇怪的错误?

简单的里程算法-抛出奇怪的错误?
EN

Stack Overflow用户
提问于 2021-02-05 13:06:25
回答 2查看 36关注 0票数 0

下面的代码接受n输入(-1表示退出)。对于每个输入,用户输入一个空格分隔的字符串,其中包含每小时的里程数和所处的小时数。随着新数据的输入,小时数会增加。

示例输入:

代码语言:javascript
运行
复制
1

20 2

30 6

10 7

-1

示例输出:

代码语言:javascript
运行
复制
170 miles (20*2 + 30*(6-2) + 10*(7-6))

代码:

代码语言:javascript
运行
复制
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());
        }
    }

}

我收到的错误:

代码语言:javascript
运行
复制
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)

这怎麽可能?

EN

回答 2

Stack Overflow用户

发布于 2021-02-05 13:16:36

请仔细查看您的循环的条件,以及您是如何接受输入的。

就空间分隔的输入而言,它们之间可能有多个空间。

试试这个:

代码语言:javascript
运行
复制
String[] parts = s.split("\\s+");

这将分割任意数量的连续空格。

票数 0
EN

Stack Overflow用户

发布于 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退出循环并编程。

我想你在输入数值时犯了一些错误。确保以适当的方式输入值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66057843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档