【问题标题】:Error when I try to compile [duplicate]我尝试编译时出错[重复]
【发布时间】:2018-02-20 21:15:34
【问题描述】:

Transcript 类 Transcript 中的构造函数不能应用于给定类型; 要求:java。 lang.String,java。朗。字符串,整数,整数 发现:java。朗。细绳 原因:实际参数和形式参数的长度不同

当我尝试编译并且不知道如何修复它时,我不断收到此错误。

import java.util.Scanner;

public class TestTranscript {
public static void main(String[] args) {
    Transcript t = new Transcript("student");
    t.promptPIN();
    t.printStudentInfo();
    t.promptGrades();
    t.printGrades();
    t.printAverage();

}
}

该程序在 2 个文件中用于分配。

import java.util.Scanner;

public class Transcript{
private int PIN = 164892; //student's personal identification number
private int grade1;       //student's grades
private int grade2;
private int grade3;
private int grade4;
private int average;      //student's total grade average
private String name;      //student's full name
private String course;    //student's course
private int year;         //year student is attending

public Transcript(String name, String course, int year, int average)
{
    this.name = name;
    this.course = course;
    this.year = year;
    this.average = average;
}
    //getters
    public int getGrade1()
    {
        return grade1;
    }

    public int getGrade2()
    {
        return grade2;
    }

    public int getGrade3()
    {
        return grade3;
    }

    public int getGrade4()
    {
        return grade4;
    }

    //setters
    public void setGrade1(int grade)
    {
        this.grade1 = grade;
    }

    public void setGrade2(int grade)
    {
        this.grade2 = grade;
    }

    public void setGrade3(int grade)
    {
        this.grade3 = grade;
    }

    public void setGrade4(int grade)
    {
        this.grade4 = grade;
    }

public void printGrades(){
    //grade 1
    System.out.print("1st Grade: " + this.grade1 + " ");
    if (grade1 < 101 && grade1 > 89) {
        System.out.println("A");
    } else if (grade1 < 90 && grade1 > 79) {
        System.out.println("B");
    } else if (grade1 < 80 && grade1 > 69) {
        System.out.println("C");
    } else if (grade1 < 70 && grade1 > 59) {
        System.out.println("D");
    } else if (grade1 < 60 && grade1 > 50) {
        System.out.println("E");
    } else if (grade1 <50 && grade1 > 0) {
        System.out.println("F");
    }

    //grade 2
    System.out.print("2nd Grade: " + this.grade2 + " ");
    if (grade2 < 101 && grade2 > 89) {
        System.out.println("A");
    } else if (grade2 < 90 && grade2 > 79) {
        System.out.println("B");
    } else if (grade2 < 80 && grade2 > 69) {
        System.out.println("C");
    } else if (grade2 < 70 && grade2 > 59) {
        System.out.println("D");
    } else if (grade2 < 60 && grade2 > 50) {
        System.out.println("E");
    } else if (grade2 <50 && grade2 > 0) {
        System.out.println("F");
    }

    //grade 3
    System.out.print("3rd Grade: " + this.grade3 + " ");
    if (grade3 < 101 && grade3 > 89) {
        System.out.println("A");
    } else if (grade3 < 90 && grade3 > 79) {
        System.out.println("B");
    } else if (grade3 < 80 && grade3 > 69) {
        System.out.println("C");
    } else if (grade3 < 70 && grade3 > 59) {
        System.out.println("D");
    } else if (grade3 < 60 && grade3 > 50) {
        System.out.println("E");
    } else if (grade3 <50 && grade3 > 0) {
        System.out.println("F");
    }

    //grade 4
    System.out.print("4th Grade: " + this.grade4 + " ");
    if (grade4 < 101 && grade4 > 89) {
        System.out.println("A");
    } else if (grade4 < 90 && grade4 > 79) {
        System.out.println("B");
    } else if (grade4 < 80 && grade4 > 69) {
        System.out.println("C");
    } else if (grade4 < 70 && grade4 > 59) {
        System.out.println("D");
    } else if (grade4 < 60 && grade4 > 50) {
        System.out.println("E");
    } else if (grade4 <50 && grade4 > 0) {
        System.out.println("F");
    }

}

public void printStudentInfo() {    //prints student's information
    System.out.println("Student Information");
    System.out.println(name);       //prints student's name
    System.out.println(course);     //prints student's course
    System.out.println(average);    //prints student's grade average
    System.out.println(year);       //prints year of student's attendance
}

public void promptPIN() {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter PIN: ");
    while (sc.nextInt() != PIN) {
        System.out.print("Invalid PIN");
    }
}

public void promptGrades() {
    Scanner sc = new Scanner(System.in);
    System.out.println("Course 1: ");
    this.grade1 = sc.nextInt();
    System.out.println("Course 2: ");
    this.grade2 = sc.nextInt();
    System.out.println("Course 3: ");
    this.grade3 = sc.nextInt();
    System.out.println("Course 4: ");
    sc.close();
}

public void printAverage() {
    Scanner in = new Scanner(System.in);

    average = (grade1 + grade2 + grade3 + grade4)/4;
    System.out.println("Grade Average: " + average);
}

}

【问题讨论】:

  • 你的构造函数声明了多少个参数?实例化类时提供了多少参数?
  • Transcript t = new Transcript("student");public Transcript(String name, String course, int year, int average) 不匹配...

标签: java constructor compiler-errors


【解决方案1】:

你有这个有你的constructor

public Transcript(String name, String course, int year, int average)
{
    this.name = name;
    this.course = course;
    this.year = year;
    this.average = average;
}

但是像这样使用它:

Transcript t = new Transcript("student");

您需要额外的参数。在你的情况下 4.

【讨论】:

  • 我不想问,但我对这一切都很陌生。我应该添加什么作为附加参数?
  • 在构造函数中,你有namecourseyearaverage。显然,您的课程旨在管理成绩单,查看您的成绩单并相应地构建您的对象。如果你想要一个只有 1 个参数的对象,那么你需要一个只接受一个参数的重载构造函数。
猜你喜欢
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多