You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:32:49