Java当用户输入没有达到条件时,如何显示未找到的数据

时间:2017-03-18 17:57:42

标签: java arraylist

如果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"));

目前的结果:

未找到数据

未找到数据

未找到数据

我希望的结果:

未找到数据

3 个答案:

答案 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; }