2017-05-25 77 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 

你会看到我改变了你的readStudentData返回void因为你传递数组到方法你不需要返回它。您需要在末尾删除return

您也可以将其保留为返回studentClass []的方法并且没有参数。相反,请在readStudentData内创建studentClass数组。我会推荐这种方法,因为它消除了创建和传递数组的需要,这使您的主要方法变得复杂。

+0

谢谢,我忘了补充一点,但现在又引发了另一个我在这个问题之前出现的错误,java.lang.ArrayIndexOutOfBoundsException:1专门在这一行上String stuLName = stuArray [1];我尝试了各种方法来修复它,并声明了stuArray中的数量,但是我得到了一个语法错误 –

+0

另外,是的,关于异常处理,稍后我将在完成代码时添加它。 –

+0

在哪一行?我注意到的一件事是'for(int i = 0; i> studentObject.length; i ++){'实际上应该是'for(int i = 0; i