猿问

Java 中的 ArrayIndexOutOfBoundsException 问题

我在使用 java 数组时遇到了一些麻烦,希望得到一些帮助。我正在尝试制作一个程序,该程序将从 3 个文件中获取信息 - 一个包含学生姓氏,一个包含他们的 gpa,一个包含他们的学号。但是,当我运行该程序时,我得到上述 ArrayIndexOutOfBoundsException 为:


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

    at Final.loadArrays(Final.java:40)

    at Final.main(Final.java:25)

我已经确保文件包含数据并且没有额外的空格等。请在下面找到我的代码,感谢您的帮助。


import java.util.Scanner;

import java.io.FileNotFoundException;

import java.io.FileReader;

import javax.swing.JOptionPane;


public class studentinfo

{


public static void main(String [] args) throws FileNotFoundException


{

final int MAX_SIZE = 3;

String[] names = new String[MAX_SIZE];

double[] gpa = new double[MAX_SIZE];

int[] studentNumber = new int[MAX_SIZE];


loadArrays(names, gpa, studentNumber);


}

public static void loadArrays(String[] names, double[] gpa, int[] studentNumber) throws FileNotFoundException


{

    Scanner namesInFile = new Scanner(new FileReader ("names.txt"));

    Scanner gpaInFile = new Scanner(new FileReader ("gpa.txt"));

    Scanner studentNumberInFile = new Scanner(new FileReader ("studentNumber.txt"));


    int i = 0;

    //loop for loading names array

    while(namesInFile.hasNext())


    {

        names[i] = namesInFile.next();

        i++;


    }


    i = 0;

    //loop for loading gpa array

    while (gpaInFile.hasNext())

    {

        gpa[i] = gpaInFile.nextDouble();

        i++;


    }

    i = 0;

    //loop for loading student number array

    while (studentNumberInFile.hasNext())

    {

        studentNumber[i] = studentNumberInFile.nextInt();

        i++;


    }



    namesInFile.close();

    gpaInFile.close();

    studentNumberInFile.close();



    for(i = 0; i < names.length ; i++)

            System.out.println(names[i]);


    for(i = 0; i < gpa.length ; i++)

            System.out.println(gpa[i]);




哔哔one
浏览 208回答 2
2回答

PIPIONE

您将顶部的最大尺寸声明为final&nbsp;int&nbsp;MAX_SIZE&nbsp;=&nbsp;3;您需要确保文档中的内容数量小于 MAX_SIZE,否则您将收到此异常。

www说

3是您的档案编号而不是档案中的学生人数。不要使用数组,因为您不知道实际数字,请List改用。import&nbsp;java.util.ArrayList;将数组更改为数组列表。ArrayList<String>&nbsp;names&nbsp;=&nbsp;new&nbsp;ArrayList<>(); ArrayList<Double>&nbsp;gpa&nbsp;=&nbsp;new&nbsp;ArrayList<>(); ArrayList<Integer>&nbsp;studentNumber&nbsp;=&nbsp;new&nbsp;ArrayList<>();使用add和get(index)。names.add(namesInFile.next());和System.out.println(names.get(i));
随时随地看视频慕课网APP

相关分类

Java
我要回答