java - 找不到适合学生的构造函数(无参数)

标签 java compiler-errors

我找到了我认为可以帮助我完成作业的代码。但是,我收到标题中所述的错误。这是程序。我是 Java 的新手,所以请原谅我格式中的任何错误。该错误突出显示“公共(public)类(class)中的第一个括号。

public class Student //Student Class
{
Address home = new Address("1027 Charleston St","Lincoln", "Ne", 68508);
Address school = new Address("1534 E St", "Lincoln", "Ne", 68508);
Student mike = new Student("Mike", "Vinci", home, school);
Student john = new Student("John", "Doe", home, school, 90, 80, 199);

//Below are the ints used
int test1 = 0;
int test2 = 0;
int test3 = 0;
int avg2;
int error = 0;

public void setTestScore(int testNum, int score)
{
    if (testNum == 1)
        test1 = score;
    else if (testNum == 2)
        test2 = score;
    else if (testNum == 3)
        test3 = score;
}

public int getTestScore(int testNum)
{
    if (testNum == 1)
        return test1;
    else if (testNum == 2)
        return test2;
    else if (testNum == 3)
        return test3;
    else
         return error;
}

public int average(int test1, int test2, int test3)
{
    int avg2 = ((test1 + test2 + test3)/3); //finds the average of the tests
    return avg2;
}

private String firstName, lastName; //private ints for coding
private Address homeAddress, schoolAddress;

public Student (String first, String last, Address home, Address school) 
{
    firstName = first;
    lastName = last;
    homeAddress = home;
    schoolAddress = school;
}

public Student (String first, String last, Address home, Address school, int test11, int test22, int test33) 
{
    firstName = first;
    lastName = last;
    homeAddress = home;
    schoolAddress = school;
    test11 = test1;
    test22 = test2;
    test33 = test3;
}

public String toString() 
{
    String result;
    result = firstName + " " + lastName + "\n";
    result += "Home Address:\n" + homeAddress + "\n";
    result += "School Address:\n" + schoolAddress + "\n";
    result += "Average=" + avg2 + " with Tests: " + test1 + ", " + test2 + ", " + test3;
    return result; //returns the result
}

class Address
{
private String streetAddress, city, state;
private long zipCode;

public Address(String street, String town, String st, long zip)
{
    streetAddress = street;
    city = town;
    state = st;
    zipCode = zip;
}

 public String toString()
 {
    String result;
    result = streetAddress + "\n";
    result += city + "," + state + " " + zipCode;
    return result; //returns the result
 }
} 
}
 public class Course extends Student //Course class
{
private String course;
private Student s1, s2, s3, s4, s5;
private int studentcount = 1;

public Course (String name)
{
course = name;
} 

public Student addStudent(String first, String last, Address home, Address    school)
{

if (studentcount == 1){
  s1 = new Student(first,last,home,school);
  studentcount++;          
  return s1;
}    

 if (studentcount == 2) {
  s2 = new Student(first,last,home,school);
      studentcount++;
  return s2;

}
else if (studentcount == 3){
  s3 = new Student(first,last,home,school);
  studentcount++;
      return s3;

}
else if (studentcount == 4){
  s4 = new Student(first,last,home,school);
      studentcount++;
  return s4;

}
else if (studentcount == 5) {
  s5 = new Student(first,last,home,school);
      studentcount++;
  return s5;

}
else {
System.out.println("No More students allowed in the class");
return null;
}

}

public double average()
 {
 return (s1.average() + s1.average() + s1.average() + s1.average() +  s1.average()) / 5.0;
}

 public String roll()
{
 String results = "";

if (studentcount == 1){
  results += s1.toString () +"n";
  return results;
}    

 if (studentcount == 2) {
  results += s1.toString () +"n";
  results += s2.toString () +"n";
  return results;

}
else if (studentcount == 3){
  results += s1.toString () +"n";
  results += s2.toString () +"n";
  results += s3.toString () +"n";
  return results;

}
else if (studentcount == 4){
  results += s1.toString () +"n";
  results += s2.toString () +"n";
  results += s3.toString () +"n";
  results += s4.toString () +"n";
  return results;

}
else if (studentcount == 5) {
  results += s1.toString () +"n";
  results += s2.toString () +"n";
  results += s3.toString () +"n";
  results += s4.toString () +"n";
  results += s5.toString () +"n";

  return results;
    } 
    else{
   return null;
}   

}
}

最佳答案

您的 Course 类扩展了 Student(这没有多大意义,但这不是重点)。

任何类中的构造函数总是调用它的父类(super class)构造函数。您可以使用

明确地执行此操作
public Course() {
    super(...);
}

在这种情况下,您可以使用您指定的参数或隐式调用父类(super class)构造函数:

public Course() {
    // no explicit call to super(...);
}

在这种情况下,您可以隐式调用不带参数的父类(super class)构造函数

在您的情况下,您没有显式调用 super(...),因此编译器将隐式调用父类(super class)构造函数 Student():但是,因为没有这样的构造函数(Student 中唯一的构造函数接受两个字符串和两个 Addresses)你会得到一个编译错误。

关于java - 找不到适合学生的构造函数(无参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32998485/

相关文章:

delphi - 将泛型类型从一个类传递到另一个类时出错

java - 数组错误期望.class

java - 不了解 Google SQL 的 JPA/JDO 的 Google 端点

java - 如何向现有 POST api 添加标志

java - 比较数组中所有元素并返回索引的递归方法

vbscript - VBS预期语句错误

java - 区分初始化器中声明的实例和静态内部类

java - 在任何屏幕分辨率下定位图像

c++ - 我不明白这个 C++ 错误 - 错误 C2101 : '&' on constant

Emacs 下一个错误 (C-x `) 可视化