Java:如何返回一个数组?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15436816/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 19:34:54  来源:igfitidea点击:

Java: how to return an Array?

javaandroidarraysreturn

提问by Joe Razon

this is the code, from what I understand, it is suppose to work. Also when I debug my program, it seems that the array is being filled with the objects that the same method is creating. But still, when I try to print it, it shows me "null" back agian, like the "return" does not work. Why is it happening?

这是代码,据我所知,它应该可以工作。此外,当我调试我的程序时,似乎数组正在填充相同方法正在创建的对象。但是,当我尝试打印它时,它再次向我显示“空”,就像“返回”不起作用一样。为什么会发生?

public class Course {

String courseName;
String teacherName;
int gradeAv;
static int counter;
static int maxNumOfStudents;
Student studentsArray[] = new Student[5];
int numOfStudents = studentsArray.length;

public Course() {

}

public Course(String courseName) {

    this();
    this.courseName = courseName;
}

public Course(String courseName, String teacherName) {

    this(courseName);
    this.courseName = courseName;
    this.teacherName = teacherName;
}

public Student[] addStudent(String name, int age, int grade) {

    for (int i = 0; i < 5; i++) {

        studentsArray[i] = new Student(name, age, grade);

        age += 10;
        grade += 10;
    }
    return studentsArray;
}

public void printStudentArray(Student studentArray[]) {

    studentArray = this.studentsArray;

    for (int i = 0; i < studentsArray.length; i++) {

        System.out.println(studentsArray[i]);
    }
}

public int gradeAv() {

    for (int i = 0; i < studentsArray.length; i++) {

        int temp = 0;

        if (studentsArray[i].grade > temp) {
            gradeAv = temp;
            System.out.println(gradeAv);
        }
    }
    return gradeAv;
}

public void printCourse() {

    System.out.println("Course: ");
    System.out.println("Course Name: " + courseName + ". "
            + "Teacher's Name: " + teacherName + ". "
            + "Number Of Students: " + numOfStudents + ". ");

}
   }

This is my main class:

这是我的主要课程:

public class MainClass {

public static void main(String[] args) {

    Student stud = new Student();
    Course cour = new Course("Java", "Ronni");

    stud.addStudent("Joe", 23, 100);

    stud.printStudent();
    System.out.println();
    stud.printCourse();

    System.out.println();

    cour.printStudentArray(cour.studentsArray);
    System.out.println();

// cour.gradeAv();

// coour.gradeAv();

}

}

}

回答by Sam I am says Reinstate Monica

in

Student stud = new Student();
Course cour = new Course("Java", "Ronni");

stud.addStudent("Joe", 23, 100);


stud.addStudent("Joe", 23, 100);will not add any students to your course. studis an instance of a completely different class, Student, and the implementation of Studentis not in the code you've posted.

stud.addStudent("Joe", 23, 100);不会将任何学生添加到您的课程中。 stud是一个完全不同的类的实例Student,并且 的实现Student不在您发布的代码中。

call the addStudentmethod of courinstead of the one for stud

调用addStudent方法cour而不是方法stud

cour.addStudent("Joe", 23, 100);

instead

反而



I would also like to add that there are a lot of curious elements to your code, some of which people have brought up in the comments. It would be tedious to list them all. I'd take a look-through, just to make sure you're not doing redundant things.

我还想补充一点,您的代码中有很多奇怪的元素,其中一些是人们在评论中提出的。将它们全部列出来会很乏味。我会仔细检查一下,以确保您没有做多余的事情。

回答by NickJ

Try this for example:

试试这个,例如:

Course class:

课程类别:

import java.util.ArrayList;
import java.util.List;

public class Course {

private List<Student> students = new ArrayList<Student>();
private String teacherName;
private String subjectName;

public Course(String subjectName, String teacherName) {
    this.subjectName = subjectName;
    this.teacherName = teacherName;
}

public void addStudent(Student student) {
    students.add(student);
}

public float getAverageGrade() {
    float grade = 0;
    for (Student student : students) {
        grade += student.getGrade();
    }
    return grade / students.size();
}

public void printCourse() {
    System.out.println("Course "+subjectName+" taught by "+teacherName);
    System.out.println("Students:");
    printStudents();
    System.out.println("Aberage grade: "+getAverageGrade());
}

public void printStudents() {
    for (Student student : students) {
        System.out.println(student.getName()+"\t age "+student.getAge()+" \t grade "+student.getGrade());
    }
}
}

Student class:

学生班:

public class Student {

private String name;
private int age;
private int grade;

public Student(String name, int age, int grade) {
    this.grade = grade;
    this.age = age;
    this.grade = grade;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public int getGrade() {
    return grade;
}

public void setGrade(int grade) {
    this.grade = grade;
}


}