[英]How do I call an ArrayList method from another class?
我正在为ArrayList
类创建文本 UI,我正在尝试在调用ArrayList
方法的第二个类中创建方法。 但是,当我尝试调用将对象添加到ArrayList
的方法时,出现错误。
private void addStudent()
{
labClass.enrollStudent();
}
我正在尝试从labClass
类中调用方法enrollStudent()
,但它说
方法 enrollStudent 不能应用于给定类型
我到底需要做什么来调用这个方法? 这是我以前没有做过的事情。
如果需要,这里是同一类的完整源代码。
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);
}
}
显然,你的班级可能有更多,但在不了解它的情况下,我写得尽可能简短
因此,除了什么@布兰登&@丹尼斯说,事实证明,你在呼唤一个不带参数的enrollStudent方法。 您需要将Student
对象传递给该方法。 另外,您需要将学生的数组列表声明为成员变量并对其进行初始化:
public class TextUI
{
private List<Student> students = new ArrayList<Student>();
private Scanner myScanner;
private LabClass labClass;
public TextUI()
{
myScanner = new Scanner(System.in);
createLabClass();
}
.......
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.