Java程序改写:通过用户输入实现do-while/while循环
解决Java持续询问用户输入直到输入0的循环问题
嘿,作为Java新手刚接触循环时踩坑太正常啦!我帮你把实现持续询问输入直到输入0的逻辑理清楚,同时给你两种常用的循环写法(do-while和while),帮你避开之前的报错坑~
核心思路
我们需要让程序重复执行“提示输入→接收输入→判断处理”的流程,直到用户输入0时终止循环。其中:
- 如果输入是1-20,执行你原来的业务逻辑
- 如果输入不是0也不是1-20,提示用户输入无效
- 如果输入是0,直接退出循环
写法1:do-while循环(更适合此场景)
do-while循环的特点是先执行一次循环体,再判断条件,完美匹配“先询问输入,再判断是否退出”的需求,不会出现循环直接跳过的情况。
完整示例代码:
import java.util.Scanner; public class InputLoopDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int input; // 存储用户输入的变量 do { // 提示用户输入 System.out.println("请输入1-20之间的整数,输入0可退出程序:"); input = scanner.nextInt(); // 处理不同输入场景 if (input >= 1 && input <= 20) { // 这里放你原来处理1-20的逻辑,比如: System.out.println("你输入了合法数字:" + input); } else if (input != 0) { // 输入既不是0也不是1-20,提示错误 System.out.println("输入无效!请输入1-20之间的数字或0退出。"); } // 输入0时,不进入任何if分支,直接判断循环条件退出 } while (input != 0); // 循环终止条件:输入为0 scanner.close(); // 关闭输入流 System.out.println("程序已退出~"); } }
写法2:while循环
while循环是先判断条件,再执行循环体,所以需要给输入变量设置一个非0的初始值,确保循环能启动。
示例代码:
import java.util.Scanner; public class InputLoopDemo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int input = -1; // 初始值设为非0,让循环能正常启动 while (input != 0) { System.out.println("请输入1-20之间的整数,输入0可退出程序:"); input = scanner.nextInt(); // 同样的场景处理逻辑 if (input >= 1 && input <= 20) { System.out.println("合法输入:" + input); } else if (input != 0) { System.out.println("输入错误,请重新输入!"); } } scanner.close(); System.out.println("程序结束~"); } }
新手常见报错原因
你之前修改代码报错,大概率是这几个问题:
- 把
input = scanner.nextInt()写在了循环外面,导致只接收一次输入,循环无法持续 - while循环的初始值设为0,导致循环直接不执行
- 循环条件写错(比如写成
input == 0,程序直接退出) - 没有处理“非0且非1-20”的情况,导致用户输入错误后程序异常
内容的提问来源于stack exchange,提问作者Benny
相关产品推荐
相关产品推荐

