Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不知道如何修复此错误java.lang.ArrayIndexOutOfBoundsException:_Java - Fatal编程技术网

我不知道如何修复此错误java.lang.ArrayIndexOutOfBoundsException:

我不知道如何修复此错误java.lang.ArrayIndexOutOfBoundsException:,java,Java,下面是我为我的程序编写的代码页,我正在完成我的内部评估。在其他类中,我声明了此方法中使用的所有对象和数组,以防您感到奇怪。我遇到的问题不是我无法运行此程序,而是当我运行文件以检查代码是否正常工作时,我收到以下错误代码: 运行: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:4 在iaversion1.MainMethod.main(MainMethod.java:57) /Users/dylan.ramirez/Library/Cach

下面是我为我的程序编写的代码页,我正在完成我的内部评估。在其他类中,我声明了此方法中使用的所有对象和数组,以防您感到奇怪。我遇到的问题不是我无法运行此程序,而是当我运行文件以检查代码是否正常工作时,我收到以下错误代码:

运行: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:4 在iaversion1.MainMethod.main(MainMethod.java:57) /Users/dylan.ramirez/Library/Caches/NetBeans/8.2/executor snippets/run.xml:53:Java返回:1 生成失败(总时间:0秒)

异常所指的行是:

ArrayToB[arrayCount] = ToBTemp;
我试图做的是将已经导入的数据库中的一个变量存储在临时变量中,该变量被列分割,可以在下面的代码中看到,在while循环之后,在临时变量中执行此操作,这样就可以在数组ToB中使用,数组ToB在main方法之外声明。我遇到的问题是,当我运行文件时,即使我要求它这样做:

System.out.println(ArrayToB[3].getTypeOfBody());
相反,它什么也不输出,只提供我上面发布的例外

有谁能帮我解决这个问题吗。如果出于任何原因,您不理解代码中的任何内容,请随时给我发消息。真的需要帮助


另外,为了获得一些额外信息,正在导入的.csv文件分为18列6行,这是.csv:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class MainMethod {

 static ToB ArrayToB[] = new ToB [4];   
 static Diet ArrayDiet [] = new Diet [4];
 static DietAttributes ArrayDietAtributes [] = new DietAttributes [4];
 static Activities ArrayActivities [] = new Activities [6];

 static int arrayCount = 0;


   public static void main(String[] args) 
    {
        String csvFile = "/Users/dylan.ramirez/Documents/COMPUTER 
SCIENCE/IA/IAVersion1/IAVersion1/src/iaversion1/DATABASE - Sheet1.csv";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = ",";

    try {

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {

            //this line separates each column of the csv file
            String[] databaseColumn = line.split(cvsSplitBy);

            //this variables store each individual column
            String sTypeOfBody = databaseColumn[0];
            String sAppearance = databaseColumn[1];
            String sDietDescription = databaseColumn[2];
            String sFoodExample = databaseColumn [3];
            String sBicepsExercise = databaseColumn [4];
            String sGluteusExercise = databaseColumn [5];
            String sAbdominalsExercise = databaseColumn [6];
            String sQuadricepsExercise = databaseColumn [7];
            String sPectoralsExercise = databaseColumn [8];
            String sDietName = databaseColumn [9];
            String sBodyNutrientsPercent = databaseColumn [10];          
            String sMuscularEnduranceActivity = databaseColumn [11];
            String sAgilityActivity = databaseColumn [12];
            String sPowerActivity = databaseColumn [13];
            String sBalanceActivity = databaseColumn [14];
            String sCoordinationActivity = databaseColumn [15];
            String sSpeedActivity = databaseColumn [16];
            String sNutrients = databaseColumn [17];


            ToB ToBTemp = new ToB(sTypeOfBody, sAppearance);
            ArrayToB[arrayCount] = ToBTemp;

            Diet DietTemp = new Diet(sDietName, sDietDescription);
            ArrayDiet[arrayCount] = DietTemp;

            DietAttributes DietAttributesTemp = new DietAttributes(sDietName, sDietDescription, sNutrients, sBodyNutrientsPercent, sFoodExample);

            Activities ActivitiesTemp = new Activities (sMuscularEnduranceActivity, sAgilityActivity, sPowerActivity, sBalanceActivity, sCoordinationActivity, sSpeedActivity, sBicepsExercise, sGluteusExercise, sAbdominalsExercise, sQuadricepsExercise, sPectoralsExercise);
            ArrayActivities [arrayCount] = ActivitiesTemp;

            arrayCount = arrayCount + 1;


        }

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

    } 
    System.out.println(ArrayToB[3].getTypeOfBody());

}

}

看起来ArrayToB有4个对象,但CSV文件有6行。一旦循环通过前四行,就超出了数组的边界

“另外,为了提供一些额外的信息,正在导入的.csv文件被分成18列6行,这是.csv:“但是您的
ArrayToB
大小只有4。您试过调试它吗?我试过调试它,但我没有帮我找出问题所在。谢谢!我删除了数据库的两行,只是为了检查它是否可以工作,是的,它可以。