如何使用驱动程序类从数组加载数据

时间:2014-08-29 19:05:33

标签: java arrays class

这是我遇到麻烦的作业。我仍然是Java的新手。我似乎无法加载学生姓名和成绩。名称和等级应该硬编码为main,不一定是25.所以我做了4.我在加载数据时遇到了困难。 (成绩)创建一个名为Student的蓝图,该蓝图有两个字段,一个是名字的字符串,另一个是整数的一维数组(不同的学生可能有不同的成绩)。使用至少两个构造函数完成蓝图,一个toString,以及getter和setter。您可以根据需要添加更多方法。 编写一个至少具有以下结构的驱动程序:

public static void main(String[] args) {
    // we do not know the number of students but there will not be >25
    Student[] students = new Student[25];

    int numStudents = loadStudents(students);
    printStudents(students,numStudents);

}

public static int loadStudents(Student[] s) {   }
public static void printStudents(Student[] s, int numStudents) {}
}

这是我到目前为止所拥有的。

学生班:

public class Student {

String name;
int[] grades;


public Student()
{
}

public Student(String n,int[] g)
{
    name=n;
    grades=g;
}

public String toString(){
return "";
}

public String getName() {
    return name;
}

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

public int[] getGrades() {
    return grades;
}

public void setGrades(int[] grades) {
    this.grades = grades;
}


}

driverclass:

public class Driver {


public static void main(String[] args) {
    // we do not know the number of students but there will not be >25
Student[] students = new Student[25];

    Student s1= new Student("John", new int[]{98, 92, 81});
    Student s2= new Student("Claire", new int[]{75, 84, 91, 39});
    Student s3= new Student("Steven", new int[]{88, 94, 65, 91,95});
    Student s4= new Student("Jason", new int[]{97, 89, 85, 82});





    int numStudents = loadStudents(students);
    printStudents(students,numStudents);

}

public static int loadStudents(Student[] s) {
      for(int i=0;i<4;i++){
      s[i]=new Student();
      System.out.println(s[i]);
      }



    }

public static void printStudents(Student[] s, int numStudents) {
        if(numStudents < s.length){
            System.out.println(s[numStudents]);
            printStudents(s,numStudents-1);
        }   

      }
}

2 个答案:

答案 0 :(得分:0)

首先,您必须从loadStudents函数返回一个int。其次,在main函数中声明了四个Student变量,这些变量现在无法在loadStudents函数中访问。一个快速的解决方案是将它们作为参数传递,并在loadStudents函数中使用不同的构造函数。

当然,有更优雅的方法可以做到这一点,只需将此答案视为您的任务的一些帮助:)

答案 1 :(得分:0)

还有一些优雅的解决方案也可用于您的问题,但是如果您想修改现有代码,请按照下面的驱动程序类进行操作,

公共类驱动程序{

public static void main(String[] args) {

    Student[] students = new Student[25];

    Student s1 = new Student("John", new int[] { 98, 92, 81 });
    Student s2 = new Student("Claire", new int[] { 75, 84, 91, 39 });
    Student s3 = new Student("Steven", new int[] { 88, 94, 65, 91, 95 });
    Student s4 = new Student("Jason", new int[] { 97, 89, 85, 82 });

    List<Student> stuList = new ArrayList<Student>();
    stuList.add(s1);
    stuList.add(s2);
    stuList.add(s3);
    stuList.add(s4);

    int numStudents = loadStudents(students, stuList);
    printStudents(students, numStudents);

}

public static int loadStudents(Student[] s, List<Student> list) {
    int size = list.size();
    for (int i = 0; i < list.size(); i++) {
        s[i] = list.get(i);
        System.out.println(s[i]);
    }
    return size;
}

public static void printStudents(Student[] s, int numStudents) {
    if (numStudents == 0) {
        return;
    }
    if (numStudents < s.length) {
        System.out.println(s[numStudents]);
        printStudents(s, numStudents - 1);
    }
}

}

并修改Student类中的toString方法。

public String toString(){
   String  str = "name : "+name;
   for(int i=0;i<grades.length;i++){
     str += grades[i] + " ";
   }
   return str;
}

我希望它能解决你的问题。