为什么我在编译正确的情况下不断得到 java.lang.NumberFormatException?

Why am I continuously getting a java.lang.NumberFormatException although it compiles correctly?

我的字符串不断收到 NumberFormatException,我不确定为什么。编译时似乎工作正常,我无法弄清楚代码有什么问题导致它不 运行.

这是显示内容的屏幕截图。

https://imgur.com/a/LfM5SDA

如上所述,我找不到我的代码不工作的任何原因。在我看来一切都很好,运行 很好,直到最后几个方法似乎。

public static int loadArray(int[] numbers) {
        System.out.print("Enter the file name: ");
        String fileName = keyboard.nextLine();
        File file = new File(fileName);
        BufferedReader br;
        String line;
        int index = 0;
            try {
                br = new BufferedReader(new FileReader(file));
                while ((line = br.readLine()) != null) {
                    numbers[index++] = Integer.parseInt(line);
                    if(index > 150) {
                        System.out.println("Max read size: 150 elements. Terminating execution with status code 1.");
                        System.exit(0);
                    }
                }
            } catch (FileNotFoundException ex) {
                System.out.println("Unable to open file " + fileName + ". Terminating execution with status code 1.");
                System.exit(0);
            }catch(IOException ie){
                System.out.println("Unable to read data from file. Terminating execution with status code 1.");
                System.exit(0);
            }

            return index;
    }

我想使用我的开关在数组中找到不同的值,但我什至无法正确加载数组文件。

问题是您正在阅读整行。

 while ((line = br.readLine()) != null)

您无法根据包含 space 的整行解析整数。

您有两个选择:

  • 在 调用该方法之前阅读 中的行并将其拆分为 space,然后将 String[] 传递给您的 loadArray 方法.
  • 省略 loadArray 的参数并用 space 拆分该行。然后,您可以遍历该数组的内容,并根据需要将每个内容转换为 int。

您在应用程序工作期间收到 NumberFormatException,因为这是 RuntimeException 并且它旨在如此工作。

您尝试从文件中的整行解析 int 的解决方案存在问题。

"123, 23, -2, 17" 不是唯一的整数。 因此,您应该执行以下操作: 而不是 numbers[index++] = Integer.parseInt(line);

String[] ints = line.split(", ");
for(i = 0; i < ints.length; i++ ){
 numbers[index++] = Integer.parseInt(ints[i]);
}