我在getSubjects
类中有一个Student
方法,它在子类中被重写。
我正在尝试使用getSubjects
方法打印数组。
主要的类代码是:
package javalab5;
import java.util.*;
/**
*
* @author Saj
*/
public class JavaLab5 {
public static final int DEBUG = 0;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Student s[] = new Student[10];
s[0] = new MathStudent(14,15);
s[1] = new MathStudent(16,19);
s[2] = new MathStudent(18,21);
s[3] = new MathStudent(23,28);
s[4] = new ScienceStudent(32,25);
s[5] = new ScienceStudent(28,56);
s[6] = new ScienceStudent(29,28);
s[7] = new ComputerStudent(25,38);
s[8] = new ComputerStudent(34,39);
s[9] = new ComputerStudent(45,56);
int numberOfStudents = 0;
for (int loop = 0; loop < numberOfStudents; loop++) {
System.out.print("Student "+ loop + " >>");
System.out.println(s[loop].getSubjects());
}
}
}
更新
这是getSubjects
方法:
public String getSubjects(){
return(" Science Student >> " + "Physics Grade: " + physicsGrade
+ " Astronomy Grade: " + astronomyGrade);
}
答案 0 :(得分:4)
首先你的循环永远不会因为这一行而运行:int numberOfStudents = 0;
转换为英语,它说:“只要numberOfStudents小于0就运行这个循环”但你已经在0了不低于0!如果您尝试遍历整个阵列,则应将其设置为10,因为您有10名学生:
for (int loop = 0; loop < 10; loop++) {
System.out.print("Student "+ loop + " >>");
System.out.println(s[loop].getSubjects());
}
这应该有效:)
编辑:顺便说一句,我在这里使用的“10”是我们称之为行业中的“神奇数字”,基本上是一个未分配给变量的硬编码数字,想象一下如果你有10个带有幻数的循环,如果你需要,你将不得不花费不必要的时间来改变所有这些,这通常是避免幻数的最佳做法:
private final int NO_STUDENTS = 10;
Students[] s = new Students[NO_STUDENTS];
//populate your array here
//Now run loop
for (int loop = 0; loop < s.length; loop++) {
System.out.print("Student "+ loop + " >>");
System.out.println(s[loop].getSubjects());
}
答案 1 :(得分:1)
您永远不会进入循环,因为您将numberOfStudents
分配为0:
int numberOfStudents = 0;//<-------------------------
for (int loop = 0; loop < numberOfStudents; loop++) {
//-------------------------------^^------------------
我认为你必须制作s.length
:
for (int loop = 0; loop < s.length; loop++) {
//------------------------^------------------
答案 2 :(得分:0)
如果你有10名学生,你应该使用:
int numberOfStudents = 10;
但最好在for循环中使用数组的length属性(在这种情况下,你不需要numberOfStudents
变量):
for (int loop = 0; loop < s.length; loop++) {
System.out.print("Student "+ loop + " >>");
System.out.println(s[loop].getSubjects());
}