Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何迭代另一个类中声明为ArrayList的类对象?_Java_Class_Arraylist - Fatal编程技术网

Java 如何迭代另一个类中声明为ArrayList的类对象?

Java 如何迭代另一个类中声明为ArrayList的类对象?,java,class,arraylist,Java,Class,Arraylist,所以我有两门课:教室和学生 在教室中,我使用学生类型创建Arraylist: 公共课堂{ int classID; 字符串类名称; ArrayList studList=新建ArrayList(); 公共教室(int classID,String className){ this.classID=classID; this.className=className; } 公共字符串toString(){ 返回(“班级ID:+classID+”班级名称:“+className+”学生列表:“+stu

所以我有两门课:
教室
学生

在教室中,我使用学生类型创建Arraylist:

公共课堂{
int classID;
字符串类名称;
ArrayList studList=新建ArrayList();
公共教室(int classID,String className){
this.classID=classID;
this.className=className;
}
公共字符串toString(){
返回(“班级ID:+classID+”班级名称:“+className+”学生列表:“+studList”);
} 
我还有两个功能。一个是将一个学生添加到列表中,另一个是向每个学生的电话号码发送消息。这就是我被卡住的地方

public void addStudent(int studID、String studName、int studPhoneNum){
学生stud=新学生(studName、studID、studPhoneNum);
studList.add(螺柱);
系统输出打印项次(studList);
}
公共无效发送消息(int studPhoneNum){
用于(学生电话:studList[studPhoneNum]){
System.out.println(“向:+电话发送消息”);
}
}
我试图理解如何迭代
studList
arraylist中的值
studPhoneNum

当我尝试执行粘贴到此处的操作时,出现了此错误:
表达式的类型必须是数组类型,但它已解析为ArrayList

我很想知道如何解决这个问题

谢谢,答案很简单。
ArrayList
不是数组。 要访问
数组列表中的项目
,请使用
[您的数组列表].get([您的索引])

因此,要在ArrayList上迭代,可以使用

for(Student student: studList)
{
  System.out.println("Sending message to: " + student);
}

for(int i=0;i
考虑使用流优化编码:

public void sendMessage(int studPhoneNum){
  Student student = studList.stream().filter(student-> student.studPhoneNum == studPhoneNum).findFirst().get();
  System.out.println("Sending message to: " + student.studName + " at " + student.studPhoneNum);
}

你可以在这里看到整个实践:

studList[studPhoneNum]
如果studList是一个数组(但不是),如果studPhoneNum是该数组中的索引(但不是),那么studPhoneNum将是有效的对列表进行迭代。对于每个元素,测试它是否有作为参数传递的电话号码。如果有,则打印一些内容。我确信您的Java书籍中有关于For循环语法的部分。请再次阅读。脱离主题,但
sendMessage
方法不应该将消息作为参数吗?@JoakimDanielson这是为了学习ng,但通常你是对的。谢谢!现在运行它不会产生任何问题,但仍然不会输出我出于某种原因在那里添加的sysout。嗯,@DanielBeilin,studList是空的,不是吗?因此它会迭代0次,因为0public void sendMessage(int studPhoneNum){ Student student = studList.stream().filter(student-> student.studPhoneNum == studPhoneNum).findFirst().get(); System.out.println("Sending message to: " + student.studName + " at " + student.studPhoneNum); }