- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个面向对象的程序,它由存储在 Grade 类的 ArrayList 中的学生组成。每个学生都有名字、姓氏和年龄。所以我想要完成的是使用Scanner在控制台中获取ArrayList中某个学生的所有信息。因此,我基本上存储用户给定的值,并使用 for 循环将其在 if 语句中与 ArrayList 中的姓名进行比较。如果传递的姓名不等于 ArrayList 中的姓名之一,则会显示一条消息,表明此人不存在于该年级。
它可以工作,但如果我循环遍历 ArrayList 以获取索引 2 上的人员,则索引 0 和 1 会弹出该人员不存在于该年级的消息,而我不希望出现这种情况。
我来自德国,这就是为什么大部分内容都是用德语写的。这是代码:
package package_Fachklassen;
import java.util.Scanner;
public class Startklasse {
public static void main(String[] args) {
// TODO Auto-generated method stub
Schoolclass sk1, sk2;
sk1 = new Schoolclass("WG 13-1");
sk2 = new Schoolclass("WG 13-2");
//Klasse 13-1
Student s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
s1 = new Student ("Gonzalo", "Cofre Real", 18, sk1);
s2 = new Student ("Swaastika", "Yogeswaran", 20, sk1);
s3 = new Student ("Derin", "Sipahi", 19, sk1);
s4 = new Student ("Henry", "Reinhold", 19, sk1);
s5 = new Student ("Sara", "Perkovic", 19, sk1);
s6 = new Student ("Honia", "Aref", 19, sk1);
s7 = new Student ("Finn", "Bolheimer", 17, sk1);
s8 = new Student ("Karoline", "Garkos", 18, sk1);
s9 = new Student ("Hannah", "Hirth", 18, sk1);
s10 = new Student ("Sarah", "Schwarz", 18, sk1);
sk1.addStudent (s1);
sk1.addStudent (s2);
sk1.addStudent (s3);
sk1.addStudent (s4);
sk1.addStudent (s5);
sk1.addStudent (s6);
sk1.addStudent (s7);
sk1.addStudent (s8);
sk1.addStudent (s9);
sk1.addStudent (s10);
//Klasse 13-2
Student ss1, ss2, ss3, ss4, ss5, ss6;
ss1 = new Student ("Cem", "Yildiz", 19, sk2);
ss2 = new Student ("Fathima", "Baba", 19, sk2);
ss3 = new Student ("Sanjie", "Bislimi", 19, sk2);
ss4 = new Student ("Jasmine", "Jaffari", 19, sk2);
ss5 = new Student ("Hannah", "Arent", 19, sk2);
ss6 = new Student ("Niklas", "Genf", 18, sk2);
sk2.addStudent (ss1);
sk2.addStudent (ss2);
sk2.addStudent (ss3);
sk2.addStudent (ss4);
sk2.addStudent (ss5);
sk2.addStudent (ss6);
while(true) {
Scanner scan = new Scanner(System.in);
System.out.println("Which class does your student visit?");
String k_input= scan.nextLine();
if(k_input.equals(sk1.getDescription())) {
System.out.println("For which student in class 13-1 are you looking for?");
String n_input = scan.nextLine();
for(int i = 0; i < sk1.getListLength(); i++) {
if(n_input.equals(sk1.getStudent(i).getName()) || n_input.equals(sk1.getStudent(i).getSurname())) {
System.out.println("Your student:");
System.out.println(" " + sk1.getStudent(i).getName());
System.out.println(" " + sk1.getStudent(i).getSurname());
System.out.println(" " + sk1.getSchueler(i).getAge());
break;
}
else if(){
System.out.println("Student does not exist in this class!");
}
}
}
}
}
}
最佳答案
它这样做是因为每次循环时,如果它不是您正在寻找的学生,它就会打印您在 else 语句中告诉它的内容。
您需要做的是根本不要添加“else”。相反,当您在“if”内找到学生时……将其存储到变量中,以便稍后在完全脱离循环后进行分析。请记住在循环之前声明此存储变量,以便在不再处于循环中时您可以使用它。它可能是一个字符串,用于构建您发送到输出的整个答案......但在这种情况下,我们将存储它以供稍后显示。
声明时将其设置为 null。
然后,当你完全完成你的循环...中断与否...你测试该变量,这就是你可以判断它是否找到任何东西的地方(如果它仍然为空或不为空。)你知道通过测试它是否仍然为空,或者在循环中是否填充了答案。
如果其中有答案(仍然不为空)...那就是您将其输出给用户的时候。
如果仍然为空...那就是您告诉用户您没有找到任何这样的学生的时候。
关于java - 当我使用 If 条件循环遍历 ArrayList 时,会显示搜索到的项目之前的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60458734/
我是一名优秀的程序员,十分优秀!