Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象测试数组,但未获得任何输出_Java_Arrays_Class_Object - Fatal编程技术网

Java 对象测试数组,但未获得任何输出

Java 对象测试数组,但未获得任何输出,java,arrays,class,object,Java,Arrays,Class,Object,我想要一些关于我正在测试的特定代码的指导,但目前它没有打印出任何内容,除此之外,我觉得它根本没有读取文本文件。它似乎马上就完成了,没有任何错误,我只得到了构建成功的提示。 作业是从一个数据文本文件中读取,该文件列出了20行学生信息,每行由名字、姓氏和他们的成绩组成,并用空格隔开。我将它放入一个数组并输出它们的信息,但现在我正在测试它是否会在继续之前输出第一个名称 public class studentClass { private String studentFName, studentLNa

我想要一些关于我正在测试的特定代码的指导,但目前它没有打印出任何内容,除此之外,我觉得它根本没有读取文本文件。它似乎马上就完成了,没有任何错误,我只得到了构建成功的提示。 作业是从一个数据文本文件中读取,该文件列出了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;
}

您需要实际调用该方法来读取数据。请尝试以下注意事项:我没有处理异常。我把它作为练习留给你

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,因为您正在将数组传递到不需要返回它的方法中。您需要删除它末尾的返回


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

我看不出您实际使用方法readStudentData的地方。谢谢,经过这么多的修改和使用不同的代码逻辑后,我忘了添加它。谢谢,我忘了在中添加它,但它现在导致了我在这个问题之前遇到的另一个错误,java.lang.ArrayIndexOutOfBoundsException:1,特别是在这一行字符串stuLName=stuArray[1];我尝试了各种方法来修复它,声明数组中有多少个,但是我得到了一个语法错误。是的,关于异常处理,我将在稍后完成代码时添加它。在哪一行?我注意到的一件事是forint I=0;i> 研究对象长度;i++{实际上应该是forint i=0;如果不使用任何参数编辑它,实际上会导致“studentObject[i]=new studentClass stuFName,stuLName,score;”的语法错误,因为它找不到symbol,所以必须将声明和初始化数组移动到方法中,否则编译器找不到它。