Java中如何循环执行特定if语句?代码问题求助
解决你的Java条件判断与循环执行问题
嘿,我来帮你梳理下这段代码的问题和改进方向!
首先先点明当前代码存在的两个核心问题:
- 逻辑分支出错:你现在用了多个独立的
if语句,会出现比如输入1时,第一个if输出Circle后,程序还会走到最后一个if (number ==4),因为不满足条件就触发else输出Incorrect Input——这显然不是你想要的结果。 - 缺少循环逻辑:当前程序只能接收一次输入就结束,没法重复执行判断流程。
改进后的代码示例
这里我调整了代码,解决了上述问题,还增加了主动退出的友好逻辑:
import java.util.Scanner; public class Main { // 类名首字母大写是Java规范哦 public static void main(String[] args) { int number = 0; Scanner input = new Scanner(System.in); // 用do-while循环实现重复执行,输入0即可退出 do { System.out.print("请输入边数(输入0退出程序):"); // 先校验输入是否为整数,避免非数字输入导致程序崩溃 if (input.hasNextInt()) { number = input.nextInt(); // 改用if-else if-else链式结构,确保只会执行第一个匹配的分支 if (number == 1) { System.out.println("Circle"); } else if (number == 3) { System.out.println("Triangle"); } else if (number == 4) { System.out.println("Quadrilateral"); // 首字母大写更符合输出规范 } else if (number != 0) { // 排除退出用的0,其他无效输入才提示错误 System.out.println("Incorrect Input"); } } else { // 处理非整数输入,同时清空无效的输入内容 System.out.println("请输入有效的整数!"); input.next(); } } while (number != 0); // 输入0时终止循环 input.close(); // 关闭Scanner释放资源 System.out.println("程序已退出"); } }
关键改动说明
- 链式条件判断:把多个独立
if改成if-else if-else结构,程序会从上到下匹配条件,找到第一个符合的分支后就跳过后续所有判断,避免了错误提示重复出现的问题。 - do-while循环:用
do-while保证程序至少执行一次输入判断,每次循环检查是否输入了0,满足就退出,完美实现重复执行的需求。 - 输入合法性校验:新增
hasNextInt()判断,防止用户输入非整数导致程序抛出异常,同时给出明确的提示引导。 - 代码规范优化:调整类名和输出字符串的大小写,更贴合Java的编码规范。
如果之后你想扩展更多边数的图形判断,或者调整退出逻辑,直接修改对应分支即可!
内容的提问来源于stack exchange,提问作者Petr Cina
相关产品推荐
相关产品推荐

