首页 > 解决方案 > 循环失败时打印消息

问题描述

我试图理解为什么我不能打印我想要的结果。我已经改变了我的循环逻辑几次,但看不到问题。

我有一个数组列表ArrayList<Landing> landings = new ArrayList<>();

我在类中有以下方法Landing来检查登陆ID;

public boolean checkId(int id) {
    if (this.landingId == id) {
        return true;

    } else {
        return false;
    }
}

我正在尝试创建一些输入处理,如果用户输入的 ID 与数组列表中的 ID 不匹配,则会打印一条错误消息。我似乎无法获得打印消息的失败场景

System.out.print("Please enter the landing ID: ");
            int id = Integer.parseInt(sc.nextLine());
            boolean unsuccessful = false;
            for (int i = 0; i < landings.size(); i++) {

                if (landings.get(i).checkId(id)) {
                    landings.get(i).printLandings();
                    unsuccessful = false;
                    break;
                } else {
                    unsuccessful = true;

                }
            }

            if (unsuccessful) {
                System.out.println(
                        "\nThe ID you enterred does not match any landing");

            }
break;

TIA

标签: javaeclipse

解决方案


如果您使用 Java 8 或更高版本,您可以执行以下操作,

Optional<Landing> landing = landings.stream().filter(i -> i.checkId(id)).findFirst();
landing.ifPresent(Landing::printLandings);
boolean unsuccessful = !landing.isPresent();

您也可以改进 checkId 方法如下,

public boolean checkId(int id) {
        return this.landingId == id;
    }

希望这能解决您的问题。干杯!


推荐阅读