java - 循环失败时打印消息
问题描述
我试图理解为什么我不能打印我想要的结果。我已经改变了我的循环逻辑几次,但看不到问题。
我有一个数组列表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
解决方案
如果您使用 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;
}
希望这能解决您的问题。干杯!
推荐阅读
- c# - MongoDB C# 驱动程序是否支持这种方式的联接?
- python-3.x - 您如何确定每个变量的最佳公司并复制案例?
- java - 以数字结尾的字符串迭代(初学者)
- c++ - 使用增量运算符通过引用传递
- oracle12c - 当我运行特定查询时,我得到 ORA-00604: 递归 SQL 级别 1 发生错误 ORA-12899: value too large for column"PLAN_TABLE"."OBJECT_NAME"
- android - 将活动应用程序始终保持在顶部,主屏幕除外
- reporting-services - 如何在 ssrs 的 IIF 表达式中使用多个条件来返回一个值
- java - 为什么超出了内存限制,我该如何避免这种情况?
- python - 将递归与循环相结合以找到最大值
- r - R igraph 包如何计算接近中心性?