如何不使用break语句退出输入整数场景下的Java for循环?
替代break退出for循环的方案
首先要指出原代码存在的一个问题:每次循环里调用了两次keyboard.nextInt(),这会导致用户输入的奇数位数值仅用于判断是否为0,偶数位数值才会被存入数组,相当于无故跳过了一半输入内容,需要先修正这个问题,再实现无break的循环退出逻辑。
方案一:修改for循环的控制变量
通过在循环内部修改循环控制变量i,让for循环的终止条件提前满足,从而自然退出循环:
public static void enterInts() { int i = 0; int[] userArray = new int[9]; int input; System.out.println("Enter up to 10 integers, type 0 when done"); for(i = 0; i < userArray.length; i++) { input = keyboard.nextInt(); if (input == 0) // 修改i的值让循环条件不成立,直接退出 i = userArray.length; else userArray[i] = input; }//for posOrNeg(userArray); }//enterInts
方案二:改用while循环重构
如果允许更换循环类型,while循环的写法会更直观,完全不需要依赖break:
public static void enterInts() { int i = 0; int[] userArray = new int[9]; int input; System.out.println("Enter up to 10 integers, type 0 when done"); while (i < userArray.length) { input = keyboard.nextInt(); if (input == 0) // 修改i的值让循环条件不成立,直接退出 i = userArray.length; else { userArray[i] = input; i++; } }//while posOrNeg(userArray); }//enterInts
核心逻辑都是通过调整循环控制变量,让循环的终止条件提前触发,从而替代break语句实现退出效果。
内容的提问来源于stack exchange,提问作者jeremslol
相关产品推荐
相关产品推荐

