如何在判断整数倍数的双方法Java程序中实现哨兵控制迭代?
Java倍数判断程序哨兵循环实现方案
前置修正:原有逻辑BUG修复
原代码中ismultiple方法存在逻辑错误,第二行if (x%y==1) return true;会导致非倍数场景也返回true,修正后该方法仅保留余数为0的判断即可。
哨兵循环实现
本次选择-1 -1作为哨兵终止值,用户输入该值时直接终止程序,完整代码如下:
import java.util.Scanner; public class Multiples { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 死循环实现重复询问,仅触发哨兵条件时退出 while (true) { System.out.printf("请输入两个用空格分隔的整数,输入-1 -1即可退出程序:%n"); int number2 = input.nextInt(); int number1 = input.nextInt(); // 哨兵条件判断,符合则直接退出循环 if (number2 == -1 && number1 == -1) { System.out.println("程序已终止"); break; } // 原有倍数判断逻辑 if (ismultiple(number1, number2)) { System.out.println(number1 + " 是 " + number2 + " 的倍数"); } else { System.out.println(number1 + " 不是 " + number2 + " 的倍数"); } } input.close(); } // 修正后的倍数判断方法 public static boolean ismultiple(int x, int y) { return x % y == 0; } }
核心修改说明
- 外层添加无限循环包裹原有业务逻辑,保证程序可以重复接收用户输入
- 新增哨兵条件判断,读取到约定的终止输入时直接中断循环退出程序,不会影响原有业务逻辑的执行
- 优化冗余代码,
ismultiple方法直接返回余数判断结果即可,无需多余分支 - 新增Scanner资源关闭操作,避免资源泄漏
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

