【问题标题】:Exception in thread "main" java.lang.NumberFormatException: For input string: "3 50"线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“3 50”
【发布时间】:2014-05-27 19:17:40
【问题描述】:

我正在为我的代码使用 Netbeans IDE。当我尝试运行它时出现此错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "3    50"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at spacely.sprockets.broc.east.SpacelySprocketsBrocEast.main(SpacelySprocketsBrocEast.java:32)

我无法在程序中找出会导致此问题的错误。我的代码如下。如果有人能指出我正确的方向,我将非常感激。谢谢。

 package spacely.sprockets.broc.east;

 import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.BufferedWriter;
 import java.io.IOException;

 public class SpacelySprocketsBrocEast
 {


     public static void main(String[] args)
     {
         BufferedReader br = null;
         BufferedWriter bw = null;

        try
        {
            br = new BufferedReader(new FileReader("sprocketorders.txt"));
            String line;
            String element[] = new String[2];
            int   sum[] = new int[5];
            File file = new File ("sprocketorders.txt");

            while ((line = br.readLine()) != null)
            {
                element = line.split(" ");

                switch(Integer.parseInt(element[0]))
                {
                    case 1:
                        sum[0] = sum[0] + Integer.parseInt(element[1]);
                        break;
                    case 2:
                        sum[1] = sum[1] + Integer.parseInt(element[1]);
                        break;
                    case 3:
                        sum[2] = sum[2] + Integer.parseInt(element[1]);
                        break;
                    case 4:
                        sum[3] = sum[3] + Integer.parseInt(element[1]);
                        break;
                    case 5:
                        sum[4] = sum[4] + Integer.parseInt(element[1]);
                        break;
                }
            }

            if (!file.exists())
            {
                file.createNewFile();
            }

            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            bw = new BufferedWriter(fw);
            bw.write("Spacely Sprockets\nTaking Sprockets into the Future\nSales Summary Report\nSprocket Number Total Quantity Sold\n");
            for(int i = 0; i < sum.length; i++)
                bw.write((i + 1) + "\t" + sum[i] + "\n");

        }
        catch (IOException e)
        {
            e.printStackTrace();

        }
        finally
        {
            try
            {
                if (br != null)
                    br.close();
                if (bw != null)
                    bw.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }

     }

 }

【问题讨论】:

  • 使用调试器单步调试您的代码,看看当您的代码试图将其解析为整数时,element[1] 是什么
  • 我尝试在 netbeans 中使用调试器,它返回了与我在上面在输出窗口中发布的相同的异常错误。然后在调试器控制台中,它说的是: Listening on javadebug User program running Debugger 停止在不可编译的源代码上。用户程序完成

标签: java exception main


【解决方案1】:

错误信息似乎相当明确。 Java 不知道如何将3 50 解释为单个整数。

如果您想知道原因,请使用调试器或在该行之前放置打印语句。抛出异常之前的最后几个打印应该是有启发性的。

【讨论】:

  • 我尝试在 netbeans 中使用调试器,它返回了与我在上面在输出窗口中发布的相同的异常错误。然后在调试器控制台中,它说的是: Listening on javadebug User program running Debugger 停止在不可编译的源代码上。用户程序完成
  • 如果你的调试器有问题,我建议插入print 语句而不是调试你的调试器。一个正常工作的调试器可以让您在崩溃发生时检查不同变量的值。
  • 好吧,我是 Java 编程世界的新手,不能 100% 确定您要添加哪些打印语句以及在何处添加它们。也许我想多了,但我一直在用这个程序挠头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多