我不知道如何修复此错误java.lang.ArrayIndexOutOfBoundsException:
下面是我为我的程序编写的代码页,我正在完成我的内部评估。在其他类中,我声明了此方法中使用的所有对象和数组,以防您感到奇怪。我遇到的问题不是我无法运行此程序,而是当我运行文件以检查代码是否正常工作时,我收到以下错误代码: 运行: 线程“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秒) 异常所指的行是:我不知道如何修复此错误java.lang.ArrayIndexOutOfBoundsException:,java,Java,下面是我为我的程序编写的代码页,我正在完成我的内部评估。在其他类中,我声明了此方法中使用的所有对象和数组,以防您感到奇怪。我遇到的问题不是我无法运行此程序,而是当我运行文件以检查代码是否正常工作时,我收到以下错误代码: 运行: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:4 在iaversion1.MainMethod.main(MainMethod.java:57) /Users/dylan.ramirez/Library/Cach
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。您试过调试它吗?我试过调试它,但我没有帮我找出问题所在。谢谢!我删除了数据库的两行,只是为了检查它是否可以工作,是的,它可以。