2017-05-25 8 views
0

私がテストしているこの特定のコードに関するガイダンスをお伝えしたいと思いますが、現在は何も印刷されていないので、テキストファイルを読み取っていないかのように感じますまったく。それは間違いなくすぐに終わるようで、私は "ビルドは成功です"というメッセージが表示されます。 割り当ては、20行の生徒情報をリストするデータテキストファイルから読み込むことです。各行は、名前、姓、およびそのグレードをすべてスペースで区切って構成されています。私はそれを配列に入れて情報を出力しますが、今は進める前に最初の名前を出力するかどうかをテストしています。オブジェクトテストの配列は出力されていません

public class studentClass { 
private String studentFName, studentLName; 
private int testScore; 
private char grade; 

//constructor 
public studentClass(String stuFName, String stuLName, int stuTestScore){ 
    studentFName = stuFName; 
    studentLName = stuLName; 
    testScore = stuTestScore; 
} 

public String getStudentFName(){ 
    return studentFName; 
} 

public String getStudentLName(){ 
    return studentLName; 
} 

public int getTestScore(){ 
    return testScore; 
} 

public char getGrade(){ 
    return grade; 
} 

public void setStudentFName(String f){ 
    studentFName = f; 
} 

public void setStudentLName(String l){ 
    studentLName = l; 
} 

public void setTestScore(int t){ 
    if (t>=0 && t<=100){ 
    testScore = t; 
    } 
} 

public void setGrade(char g){ 
    grade = g; 
} 
} 
public static void main(String[] args) throws IOException { 

    int numberOfLines = 20; 
    studentClass[] studentObject = new studentClass[numberOfLines]; 

    for(int i = 0; i>studentObject.length; i++){ 
     System.out.print(studentObject[i].getStudentFName()); 
    } 

} 
public static studentClass[] readStudentData(studentClass[] studentObject)throws IOException{ 
    //create FileReader and BufferedReader to read and store data 
    FileReader fr = new FileReader("/Volumes/PERS/Data.txt"); 
    BufferedReader br = new BufferedReader (fr); 

    String lines = null; 
    int i = 0; 

    //create array to store data for firstname, lastname, and score 
    while ((lines = br.readLine()) != null){ 
     String stuArray[] = lines.split(" "); 
     String stuFName = stuArray[0]; 
     String stuLName = stuArray[1]; 
     int score = Integer.parseInt(stuArray[2]); 
     studentObject[i] = new studentClass (stuFName, stuLName, score); 
     i++; 
    } 

    return studentObject; 
} 
+1

実際にreadStudentData()メソッドを使用する行が表示されません。 – Sedrick

+0

ありがとう、たくさんの改訂とコードの別のロジックで遊んだ後、私はそれを追加することを忘れました。 –

答えて

1

実際にデータを読み込むメソッドを呼び出す必要があります。 (私は例外を処理しませんでした注意してください。私はあなたに練習として残しておき)、以下を試してみてください

public static void main(String[] args) throws IOException { 
    int numberOfLines = 20; 
    studentClass[] studentObject = new studentClass[numberOfLines]; 
    readStudentData(studentObject); 

    //NOTE I CHANGED THE '>' TO '<' 
    for(int i = 0; i < studentObject.length; i++){ 
     System.out.print(studentObject[i].getStudentFName()); 
    } 
} 

//Note that I changed the return type to void 
public static void readStudentData(studentClass[] studentObject)throws IOException{ 
    //Your code here 

あなたはメソッドに配列を渡しているので、私がvoidを返すために、あなたのreadStudentDataを変更し表示されますそれを返す必要はありません。最後にreturnを削除する必要があります。

また、studentClass []を返すメソッドとして残して、パラメータを持たなくてもかまいません。代わりに、readStudentDataの中にstudentClass配列を作成します。私は、あなたの主な方法を複雑にする配列を作成して渡す必要がなくなるため、この方法をお勧めします。

+0

ありがとう、私はそれを追加することを忘れていましたが、今私はこの質問の前に持っていた別のエラーに私を導いています、java.lang.ArrayIndexOutOfBoundsException:特にこの行に1 String stuLName = stuArray [1];私はさまざまな方法でstuArrayでいくつの宣言をして修正しようとしましたが、構文エラー –

+0

を取得しました。また、例外処理に関しては、後でコードを終了するときに追加します。 –

+0

どの行にありますか?私が気づくことの1つは、 'for(int i = 0; i

関連する問題