【发布时间】:2015-12-05 23:34:47
【问题描述】:
错误信息是:
StudentArray.java:14: error: constructor Student in class Student cannot be applied to given types;
roster.add(new Student(name, id));
^
required: no arguments
found: String,String
reason: actual and formal argument lists differ in length
它重复了几次,并且还为我的 numberOfStudents 变量提供了无法找到符号错误。这是程序,它还没有完成,但我不能在没有弄清楚的情况下继续前进。感谢您的帮助!
import java.util.ArrayList;
import java.util.Scanner;
public class StudentArray {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Student> roster = new ArrayList<>();
int numberOfStudents = 0;
}
/** Add student method, includes student name and ID */
public void addStudent(String name, String id) {
roster.add(new Student(name, id));
numberOfStudents++;
}
/** Overloaded addStudent method to include grades */
public void addStudent(String name, String id, int grade1, int grade2, int grade3) {
roster.add(new Student(name, id, grade1, grade2, grade3));
numberOfStudents++;
}
/** Method to enter test grades */
public void enterTestGrades(int testNumber) {
int data = -1;
for (int index : roster) {
System.out.println("Enter the grade for " + roster.get(index) + ":");
data = input.nextInt();
roster.set(index, data);
}
}
public void displayStudentInformation() {
}
public void displayMenu() {
}
}
上一个程序正在制作数组列表的学生类,这个编译得很好。
/** Student Class */
public class Student2 {
private String studentName;
private String studentId;
private final int NUMBER_OF_GRADES = 3;
private int[] studentGrades = new int[NUMBER_OF_GRADES];
private int averageGrade;
private final int DEFAULT_GRADE = -1;
/** No arg constructor */
public Student2() {
for (int index = 0; index < NUMBER_OF_GRADES; index++) {
this.studentGrades[index] = DEFAULT_GRADE;
}
}
/** Constructor that sets Student name and ID */
public Student2(String name, String id) {
this();
this.studentName = name;
this.studentId = id;
}
/** Constructor that sets all Student data */
public Student2(String name, String id, int grade1, int grade2, int grade3) {
this(name, id);
this.studentGrades[0] = grade1;
this.studentGrades[1] = grade2;
this.studentGrades[2] = grade3;
}
/** Accessor for studentName */
public String getStudentName() {
return this.studentName;
}
/** Accessor for studentId */
public String getStudentID() {
return this.studentId;
}
/** Accessor for student grades */
public int getStudentGrade(int index) {
return this.studentGrades[index];
}
/** Return average student grade */
public int getAverageStudentGrade() {
int temp = 0;
for (int index = 0; index < NUMBER_OF_GRADES; index++) {
temp += getStudentGrade(index);
}
int averageStudentGrade = temp / NUMBER_OF_GRADES;
return averageStudentGrade;
}
/** Return letter grade */
public char getLetterGrade(int grade) {
int temp = grade / 10;
char letterGrade;
switch (temp) {
case 10:
case 9: letterGrade = 'A';
break;
case 8: letterGrade = 'B';
break;
case 7: letterGrade = 'C';
break;
case 6: letterGrade = 'D';
break;
default: letterGrade = 'F';
break;
}
return letterGrade;
}
/** Setter method for studentName */
public void setStudentName(String name) {
this.studentName = name;
}
/** Setter method for studentId */
public void setStudentId(String id) {
this.studentId = id;
}
/** Setter for studentGrade */
public void setStudentGrade(int grade, int index) {
this.studentGrades[index] = grade;
}
}
如果你能帮助我,非常感谢。我完全被困住了,这是我第一个 java 类的最后一个项目。
【问题讨论】:
-
你有 2 个学生班吗?
-
那是你粘贴的
Student2类 -
哦,不。我重新制作了它并将第一个编辑保存为学生。
-
roster是main类的局部变量。您无法从外部访问它。有些东西告诉我您发布的代码和错误消息不相关。 -
哦,我明白了,我将其命名为 Student2,然后尝试仅调用 Student。
标签: java arraylist constructor compiler-errors