gpt4 book ai didi

java - 如何从另一个类调用 ArrayList 方法?

转载 作者:行者123 更新时间:2023-11-30 08:44:45 25 4
gpt4 key购买 nike

我正在为 ArrayList 类创建文本 UI,我正尝试在第二个类中创建调用 ArrayList 的方法方法。但是,当我尝试调用将对象添加到 ArrayList 中的方法时,出现错误。

private void addStudent()
{
labClass.enrollStudent();
}

我正在尝试从 labClass 类中调用方法 enrollStudent(),但它说的是

method enrollStudent cannot be applied to given types

我到底需要做什么来调用这个方法?这是我以前从未做过的事情。

如果需要,这里是同一类的完整源代码。

import java.util.Scanner;
import java.util.*;

public class TextUI
{

private Scanner myScanner;
private LabClass labClass;

public TextUI()
{
myScanner = new Scanner(System.in);
createLabClass();
}

public void menu()
{
int command = -1;
while(command != 0)
{
displayMenu();
command = getCommand();
execute(command);
}
}

public void displayMenu()
{
System.out.println("Select command: ");
System.out.println(" Display Full Class Details: 1");
System.out.println(" Add Student: 2");
System.out.println(" Find Student by Name: 3");
System.out.println(" Set Instructor: 4");
System.out.println(" Set Room Mumber: 5");
System.out.println(" Set Time and Day: 6");
System.out.println(" Remove Student: 7");
System.out.println(" Get Class Size: 8");
System.out.println(" Terminate Program: 0");
}

private void createLabClass()
{
LabClass labClass = new LabClass();
}

private int getCommand()
{
System.out.print("Enter command: ");
int command = myScanner.nextInt();
return command;
}

private void execute(int command)
{
if(command == 0)
{
System.out.println("Terminating program...");
System.exit(0);
}
else
if(command == 8)
{
System.out.println("The class size is: " + getClassSize());
}
}

private int getClassSize()
{
return labClass.getNumberOfStudents();
}

private void addStudent()
{
labClass.enrollStudent();
}
}

这是 LabClass.enrollStudent 的代码

/**
* Add a student to this LabClass.
* @param newStudent the student object to be enrolled
*/
public void enrollStudent(Student newStudent)
{
students.add(newStudent);
}

添加学生代码

private void execute(int command)
{
if(command == 0)
{
System.out.println("Terminating program...");
System.exit(0);
}
else if(command == 1)
{
labClass.getLabClass();
}
else if(command == 2)
{
addStudent();
}
}

最佳答案

看起来您正在覆盖您的类变量 labClass 在您的 createLabClass 方法中,删除领先的 LabClass。它应该是这样的

private void createLabClass()
{
labClass = new LabClass();
}

我认为正在发生的事情是您试图从从未实例化的类变量中访问 labClass.enrollStudent();。相反,您正在实例化它的一个从未使用过的本地版本

然后,当涉及到您的 LabClass 实现时,像这样的东西就足够了

public class LabClass() {
private ArrayList<Student> students = new ArrayList<>();

public void enrollStudent(Student newStudent) {
students.add(newStudent);
}
}

显然,你的课上可能有更多,但在不了解的情况下,我写得尽可能简短

关于java - 如何从另一个类调用 ArrayList 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33653929/

25 4 0