如何为Java while循环添加用户续行功能?代码放置位置咨询
解决方法
直接把整个流程套进外层循环,同时修复原代码里的错误校验逻辑(原来的错误提示是死循环,不会让用户重新输入参数),完整修改后的代码如下:
import java.util.Scanner; public class Sum3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int start, end, step; char option; // 外层do-while循环,控制程序是否重复执行 do { // 输入并校验START和END值 do { System.out.print("Enter START value: "); start = input.nextInt(); System.out.print("Enter END value: "); end = input.nextInt(); if (start > end) { System.out.println("Start is larger than End, please re-enter."); } } while (start > end); // 不符合条件就重新输入 // 输入并校验STEP值 do { System.out.print("Enter STEP value: "); step = input.nextInt(); if (step == 0) { System.out.println("Step cannot be zero, please re-enter."); } } while (step == 0); // step为0就重新输入 // 执行循环打印逻辑 for (int i = start; i < end; i += step) { System.out.println(i); } // 询问是否继续,统一转大写兼容小写输入 System.out.println("Would you still want to continue? (Y/ N)"); option = input.next().toUpperCase().charAt(0); } while (option == 'Y'); // 输入Y就继续循环,否则退出 input.close(); // 关闭Scanner资源 } }
关键改动说明
- 外层用
do-while循环:保证程序至少执行一次,每次执行完后根据用户输入决定是否重复运行。 - 参数校验改成
do-while:原代码只会一直打印错误提示,不会让用户重新输入参数,现在改成不符合条件就重新输入,直到参数合法。 - 移除原代码的
while(true)死循环:这个循环会导致程序一直打印内容,根本到不了询问继续的逻辑,直接去掉后让for循环每次执行一次即可。 - 增加
toUpperCase():兼容用户输入小写的y/n,统一转成大写判断,提升交互友好性。 - 关闭Scanner:避免资源泄漏。
内容的提问来源于stack exchange,提问作者razorGold
相关产品推荐
相关产品推荐

