如果4中的用户密钥,我希望弹出一条消息,告知用户没有找到用户ID的数据" 4"在数组列表中。
但当4中的用户键有3时,没有找到数据。
User usr1 = new User(1,"Ken", 55.5, 26, Arrays.asList("0140392812", "0123456789"));
User usr2 = new User(2, "Mark", 54.7, 33, Arrays.asList("0129876543"));
User usr3 = new User(3, "Ong", 62.3, 34, Arrays.asList("06123456", "0987654322", "01798654321"));
ArrayList<User> ulist = new ArrayList<User>();
ulist.add(usr1);
ulist.add(usr2);
ulist.add(usr3);
String answer ="";
do{
Scanner scan = new Scanner(System.in);
System.out.println("Please Enter user ID");
int userid = scan.nextInt();
for(User uid: ulist){
if(userid == uid.getUID()){
System.out.println(uid.getUID() +", " + uid.getName() +", " + uid.getAge() +" years old, " + uid.getWeight() +"kg");
}else{
System.out.println("no data found");
}
}
System.out.println("Continue(Y/N)");
answer = scan.next();
}while(answer.equalsIgnoreCase("y"));
目前的结果:
未找到数据
未找到数据
未找到数据
我希望的结果:
未找到数据
答案 0 :(得分:1)
从循环中删除else { System.out.println("no data found"); }
并将其放在外面。 for循环意图是找到,以查找正确的用户。
一旦找到你可以使用它:你必须在循环之前声明一个User类型的变量,初始化为null,如果它在查找后为null,你必须打印消息&#39; not found&#39 ;
答案 1 :(得分:0)
你得到no data found
3次因为你在周期中打印它:对于列表中的每个用户,如果他的ID与指定的id不匹配,System.out.println("no data found");
你可以避免这种修改你的循环或编写一个用id来装点用户的方法。
User found;
for (User uid : ulist) {
if (userid == uid.getUID()) {
found = uid;
break; // assuming that ids are unique
}
}
if (found != null) {
System.out.println(found.getUID() +", " + found.getName() +", " + found.getAge() +" years old, " + found.getWeight() +"kg");
} else {
System.out.println("no data found");
}
答案 2 :(得分:-1)
你的逻辑有问题。 在for循环中,如果没有找到数据,你应该有一个break语句。
else {
System.out.println("no data found");
break;
}