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

Java Scanner输入整数需输入两次才生效的原因与修复方法

问题产生原因
  • 重复调用Scanner.nextInt()消费输入:你在while的循环条件!(scan.nextInt() <= 0)里调用了一次nextInt(),这一步会直接读取用户输入的第一个整数,但读出来的值没有保存到变量里直接丢弃。进入循环体后你又调用了一次scan.nextInt()读取第二个整数,才会把值存到input变量做判断,直接导致每轮循环需要输入两次值才能触发输出逻辑。
  • 输出逻辑不符合预期:原代码判断分支里下降场景输出的是Not Increasing,和预期的Decreasing不一致;额外打印的Input Number:提示语也不在预期输出范围内。
修复方案
  • 移除循环条件里的nextInt()调用,把读取输入的逻辑统一放到循环体内,每轮循环只读取一次用户输入,先判断输入值是否<=0,满足则直接终止循环,不做后续判断。
  • 修正判断分支的输出文本:当前输入大于上一次输入时打印Increasing,否则打印Decreasing。
  • 删除多余的Input Number:打印语句,对齐预期的输入输出效果。
修复后完整代码
import java.util.Scanner;

public class Prob1 {
    public static void main(String[] args) {
        System.out.println("Starting...");
        int input;
        int previousInput = 0;
        Scanner scan = new Scanner(System.in);
        while (true) {
            input = scan.nextInt();
            // 输入小于等于0时退出程序
            if (input <= 0) {
                break;
            }
            if (input > previousInput) {
                System.out.println("Increasing");
            } else {
                System.out.println("Decreasing");
            }
            // 更新上一次输入的值,供下一轮对比
            previousInput = input;
        }
        scan.close();
    }
}

修复后的代码运行时,每输入一个整数按回车就会立刻返回对比结果,输入小于等于0的数时程序自动退出,完全匹配预期的输入输出效果。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:09:18