【问题标题】:Arrays of Object test but not getting any output对象数组测试但没有得到任何输出
【发布时间】:2017-05-25 19:04:20
【问题描述】:

我想要一些关于我正在测试的特定代码的指导,但目前它没有打印出任何东西,最重要的是我觉得它根本没有读取文本文件。它似乎立即完成,没有错误,我只得到提示“构建成功”。 作业是从一个列出 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;
}

【问题讨论】:

  • 我没有看到你实际使用方法 readStudentData() 的那一行。
  • 谢谢,修改了这么多代码,玩弄了不同的逻辑,忘记加了。

标签: java arrays class object


【解决方案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 数组。我会推荐这种方法,因为它不需要创建和传递数组,这会使您的 main 方法复杂化。

【讨论】:

  • 谢谢,我忘了添加它,但它现在导致我在这个问题之前也遇到另一个错误,java.lang.ArrayIndexOutOfBoundsException: 1 特别是在这一行 String stuLName = stuArray[1 ];我尝试了各种方法来修复它,并声明 stuArray 中有多少个,但随后出现语法错误
  • 另外,是的,关于异常处理,我将在稍后完成代码时添加。
  • 在哪一行?我注意到的一件事是for(int i = 0; i&gt;studentObject.length; i++){ 实际上应该是for(int i = 0; i&lt;studentObject.length; i++){(我也会更新我的答案以包括这个
  • 在没有参数的情况下编辑它实际上会给我一个语法错误' studentObject[i] = new studentClass (stuFName, stuLName, score); ' 因为“它找不到符号”
  • 为此,您必须将数组的声明和初始化移到方法中,否则编译器找不到它。
猜你喜欢
  • 2018-07-10
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2018-05-30
  • 2021-01-24
  • 2017-05-26
相关资源
最近更新 更多