【问题标题】:How can I correctly use Parse int in my code如何在我的代码中正确使用 Parse int
【发布时间】:2022-11-18 01:00:22
【问题描述】:

Parse int 搞乱了我的文件扫描 我主要是尝试读取此 txt 文档中的第一个数字,并将其用作要在 for 循环中实现的数字。我的代码在不包含它的情况下运行良好,但我想用它来继续这个小项目。

 {
        int i=0;
        while(inFile.hasNextLine()){
            String line = inFile.nextLine();
            //int num = Integer.parseInt(line);
         
            if(line.toLowerCase().equals("basketball")){
                AllSports.add(new Basketball(i));
            }
            if(line.toLowerCase().equals("football")){
                AllSports.add(new Football(i));
            }
            
            for(Sports obj:AllSports){
                obj.Score_Med();
                obj.Score_Med();
            }
            i++;
        }
        }

我评论了 parseInt 行,我也试过 .nextInt,它仍然给我一个错误。我的 txt 文件目前看起来像这样:

3个 篮球 篮球 足球

我得到的错误是

File name?: 
input.txt
Exception in thread "main" java.lang.NumberFormatException: For input string: "Basketball"        
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
        at java.base/java.lang.Integer.parseInt(Integer.java:665)
        at java.base/java.lang.Integer.parseInt(Integer.java:781)
        at Sport_Runner.main(Sport_Runner.java:24)

我的 txt 文件:

3
Basketball
Basketball
Football

第 24 行是 parseInt 行所在的位置。

【问题讨论】:

  • 应该怎样“篮球”看起来像一个数字?
  • 注意java命名约定。名称应该是驼峰式而不是蛇形,变量名应该以小写字符开头
  • 您正在为文件中的每一行调用 Integer.parseInt(line)。由于只有第一行包含数字,因此所有后续行都将失败。您需要更改代码,使 Integer.parseInt(line) 仅用于文件的第一行。
  • 我将把这个例子作为一个编辑包括在内,关于命名约定,那些变量和类名很遗憾是由我的教授制定的,但你仍然是对的。

标签: java parsing


【解决方案1】:

作为一般经验法则,whileLoop 中的所有内容都将运行不止一次;您的输入只有一个数字,因此如果您在循环内的nextLine 上调用parseInt,您可能会解析多行。

基本上,您需要在循环之外执行此操作。此外,我可能会使用 int 作为循环的条件(for 而不是 while),尽管假设没有偷偷摸摸的输入它应该是等价的。

【讨论】:

  • 这样做了,我想得太多了。非常感谢您的帮助!
猜你喜欢
  • 2015-02-24
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 2019-03-07
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多