为什么我不断收到一个 java.lang.数字格式例外,尽管它编译正确?

我不断得到一个我的字符串,我不知道为什么。编译时它似乎工作正常,我无法找出代码的错误导致它无法运行。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;

    }

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


慕沐林林
浏览 72回答 2
2回答

智慧大石

在应用工作期间,你将获得“数字格式异常”,因为这是运行时异常,它旨在正常工作。您的解决方案的问题,您尝试从文件中的整行解析int。“123, 23, -2, 17” 不是一个整数。因此,您应该执行以下操作:numbers[index++] = Integer.parseInt(line);String[] ints = line.split(", ");for(i = 0; i < ints.length; i++ ){&nbsp;numbers[index++] = Integer.parseInt(ints[i]);}

aluckdog

问题是你正在阅读一整行。&nbsp;while&nbsp;((line&nbsp;=&nbsp;br.readLine())&nbsp;!=&nbsp;null)不能基于带有空格的整行来分析整数。您有两种选择:在调用方法并按空格拆分它之前,请先阅读该行,然后将其传递到方法中。String[]loadArray省略该参数并按空格拆分行。然后,您可以循环访问该数组的内容,并根据需要将每个内容转换为 int。loadArray
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java