这是我遇到麻烦的作业。我仍然是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);
}
}
}
答案 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;
}
我希望它能解决你的问题。