java - 为什么我无法将对象添加到我的 arrayList 中?

标签 java arraylist constructor compiler-errors

错误信息是:

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 类(class)的最终项目。

最佳答案

错误消息实际上非常明确:它无法创建 Student 实例,因为它找不到任何采用两个字符串作为参数的构造函数。

这意味着您的类 Student(不是 Student2)没有此构造函数。

关于java - 为什么我无法将对象添加到我的 arrayList 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34112230/

相关文章:

java - 如何检查Android线程是否正在运行

java - 从整数的商中获取 double 值

java - 单向链表 - get 和 add 方法

java - 这两种相加方式是等价的吗?

java - Android - finish() 方法上的 StartActivityForResult 卡住 UI

android - 在 android 中使用共享首选项保存数据

java - 列表问题

c++ - 使用 push_back 函数调用复制构造函数的 vector 内存分配调用

java - 如何知道在创建对象时使用了哪个构造函数?

java - 构造函数和方法之间的区别