2017-12-01 4 views
-1

以下は私のプログラムのために私が自分の内部評価のために書いたコードページです。他のクラスでは、このメソッド内で使用されているすべてのオブジェクトと配列を宣言しています。私が持っている問題は、私はこれを実行することができませんが、コードが正常に機能することを確認するためにファイルを実行するとき、私はこのエラーコードが表示されます:このエラーを修正する方法を知ることができませんjava.lang.ArrayIndexOutOfBoundsException:

実行: スレッド "main" java.lang.ArrayIndexOutOfBoundsException:4 at iaversion1.MainMethod.main(MainMethod.java:57) /Users/dylan.ramirez/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53:Javaが返されました:

例外が参照されるラインである:1 BUILD(0秒の合計時間):失敗

ArrayToB[arrayCount] = ToBTemp; 

私がしようとしているのは、既にインポートされたデータベースの変数を列で区切って格納することです。このコードはwhileループの直後のこのコードで、一時変数でこれを行うことができますメインメソッドの外で宣言された配列ToBで使用されます。私が持っている問題は、それがこれを行うために、私が求めていたとしても、私は、ファイルを実行するとことです:

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

それは代わりに何も出力しないと、私は上記の投稿の例外を除いて、私を提供します。

私が抱えている問題を誰かが助けてくれますか?何らかの理由でコード内の何かを理解できない場合は、私にメッセージを送ることを躊躇しないでください。本当に助けが必要です!

また、単にいくつかの追加情報については、インポートされた.csvファイルは18列と6行に分割され、これは.CSVです:ArrayToBは4つのオブジェクトを持っているよう

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()); 

} 

} 
+0

"インポートする.csvファイルは18列6行に分割されていますが、これは.csvです:"ただし、あなたの 'ArrayToB'サイズは4だけです。 – tsolakp

+0

試しましたか?それをデバッグしますか? –

+0

私はそれをデバッグしようとしましたが、私は本当に問題が何かを理解するために私を助けていませんでした。 –

答えて

2

は見えるが、 CSVファイルには6行あります。ループが最初の4行を渡すと、配列の境界から外れてしまいます。

+0

ありがとうございました!私はそれがうまくいくかどうかをチェックするためにデータベースの2行を削除しました。 –

関連する問題