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

Java如何精简询问用户是否继续执行的循环代码并提升运行效率

Java代码精简方案

优化后代码(兼容Java 11+)

import java.util.Scanner;
import java.util.stream.IntStream;

public class NumberPrinter {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int enter;
        do {
            // 输入两个数字
            System.out.print("Enter first number: ");
            int fnum = sc.nextInt();
            System.out.print("Enter second number: ");
            int snum = sc.nextInt();
            
            // 统一处理升序/降序输出
            int step = fnum <= snum ? 1 : -1;
            IntStream.iterate(fnum, n -> n != snum + step, n -> n + step)
                    .forEach(System.out::println);
            
            // 询问是否继续
            System.out.print("Enter 1 to continute, enter any number to end: ");
            enter = sc.nextInt();
        } while (enter == 1);
        
        // 退出提示
        String line = "*".repeat(48);
        System.out.printf("%s\n%s\n******************Thank you*********************\n%s\n%s\n", line, line, line, line);
        sc.close();
    }
}

低版本Java兼容版(Java 8+)

如果用不了Java 11的新特性,可以使用下面的版本,功能完全一致:

import java.util.Scanner;

public class NumberPrinter {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int enter;
        do {
            System.out.print("Enter first number: ");
            int fnum = sc.nextInt();
            System.out.print("Enter second number: ");
            int snum = sc.nextInt();
            
            // 统一循环逻辑
            int step = fnum <= snum ? 1 : -1;
            for (int i = fnum; fnum <= snum ? i <= snum : i >= snum; i += step) {
                System.out.println(i);
            }
            
            System.out.print("Enter 1 to continute, enter any number to end: ");
            enter = sc.nextInt();
        } while (enter == 1);
        
        // 退出提示
        String line = "************************************************";
        System.out.println(line + "\n" + line + "\n******************Thank you*********************\n" + line + "\n" + line);
        sc.close();
    }
}

核心优化点

  • 完全消除重复代码:将原来重复两次的数字输入、遍历输出逻辑全部整合到do-while循环中,不需要额外提前执行一次逻辑,代码量减少50%以上
  • 统一升序/降序输出逻辑:通过步长变量step合并两个分支的while循环,不需要分开写两套遍历逻辑,可读性大幅提升
  • 简化退出逻辑:去掉冗余的System.exit(0)调用,循环条件不满足时程序会自然执行退出提示后结束,逻辑更通顺
  • 性能无损耗:所有优化都是语法层面的精简,运行效率和原有代码完全一致,甚至因为减少了分支判断会略快于原代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:09