我现在搜索了论坛半小时,我找不到解决方案.. 我必须写一个程序"学生"它有2个构造函数(一个带参数)。现在我想在我的测试类中测试它" StudentTest2"但我不能去学生班的建设者。
我的班级学生是:
import java.util.ArrayList;
public class Student{
boolean validMatNumber;
String name;
private int matrikelnummer;
//statisch, da sich die Anzahl der Studenten global ändern muss
static int numberOfStudents;
static ArrayList<Student> students = new ArrayList<Student>();
public Student() {
new Student();
students.add(this);
numberOfStudents++;
}
public Student(String name, int matrikelnummer){
if (matrikelnummer > 9999 && matrikelnummer < 100000){
validMatNumber = true;
this.matrikelnummer = matrikelnummer;
this.name = name;
students.add(this);
numberOfStudents++;
}
else{
validMatNumber = false;
}
}
String printInformation(){
return ("Name: "+ this.name + " Matrikelnummer: " + this.matrikelnummer);
}
void printAllInformation(){
for(Student aStudent: students){
System.out.println("Name: " + aStudent.getName() + "Matrikelnummer: " +
aStudent.getMatrikelnummer());
}
}
public String getName(){
return name;
}
public int getMatrikelnummer(){
return matrikelnummer;
}
boolean isValidMatNumber(){
//Da die Matrikelnummer 5 stellig sein soll und nicht mit 0 anfangen darf,
//habe ich diesen Zahlenbreich gewählt
if (matrikelnummer > 9999 && matrikelnummer < 100000){
validMatNumber = true;
return validMatNumber;
}
else{
validMatNumber = false;
return validMatNumber;
}
}
static int getNumberOfStudents(){
return numberOfStudents;
}
到目前为止,我的测试类是(不起作用):
public class StudentTest2{
public static void main(String[] args){
Student s1 = new Student(Peter, 12345);
}
}
我收到错误
StudentTest2.java:5:错误:找不到符号 学生s1 =新学生(Peter,12345); ^ 符号:变量彼得 location:class StudentTest2
答案 0 :(得分:1)
您需要传递state_str
和String
:
int
或您认为Student s1 = new Student("Peter", 12345);
是什么?编译器完全不知道。它会导致消息“无法解析符号”
答案 1 :(得分:1)
在构造函数中,您定义了String
和int
;
public Student(String name, int matrikelnummer){
问题是 - 您正试图传递Peter, 12345
,但Peter
不是String
。您只需用String
"
即可
例如:
Student s1 = new Student("Peter", 12345);
答案 2 :(得分:0)
您尝试使用的Student类构造函数接受String
和int
值作为参数。
所以你的代码应该是:
Student s1 = new Student("Peter", 12345);
或者你声明一个变量调用peter,如编译器所示:
String Peter = "Peter";
Student s1 = new Student(Peter, 12345);
答案 3 :(得分:0)
你的构造函数中有一个无限循环:
public Student() {
new Student(); // infinite recursive calls, delete this line
students.add(this);
numberOfStudents++;
}
然后将Peter
称为String
或包含String
的变量。