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

如何解决求偶数最大与和程序的TIMEOUT(无限循环)错误

解决Java程序输出正确但触发超时错误的问题

你的程序逻辑没问题,循环是正常终止的——超时错误不是因为循环没结束,而是Scanner资源没关闭导致的。

有些在线评判平台会在程序执行完后检查输入流状态,如果发现Scanner还持有未释放的输入资源,会误以为程序还在等待输入,从而抛出"TIMEOUT (Infinite loop?)"的错误提示;而其他编译器/平台对资源释放的检查没这么严格,所以没出现这个问题。

修复方法

可以通过两种方式解决,核心都是确保Scanner资源被正确释放:

方法1:手动关闭Scanner

在程序末尾添加关闭语句:

static void evenSumMax() {
    Scanner sc = new Scanner(System.in);
    System.out.print("how many integers? ");

    int size = sc.nextInt();
    int integer[] = new int[size];
    int sum = 0;
    int max = 0;

    for (int i = 0; i < size; i++) {
        System.out.print("next integer? ");
        integer[i] = sc.nextInt();
        if (integer[i] > 0 && integer[i] % 2 == 0) {
            sum += integer[i];
            if (integer[i] > max) {
                max = integer[i];
            }
        }
    }
    System.out.println("even sum = " + sum);
    System.out.println("even max = " + max);
    // 关闭Scanner释放输入资源
    sc.close();
}

方法2:使用try-with-resources(推荐)

利用Java 7+的AutoCloseable特性,让系统自动关闭资源,避免手动遗漏:

static void evenSumMax() {
    // try块结束后,系统自动关闭sc
    try (Scanner sc = new Scanner(System.in)) {
        System.out.print("how many integers? ");

        int size = sc.nextInt();
        int integer[] = new int[size];
        int sum = 0;
        int max = 0;

        for (int i = 0; i < size; i++) {
            System.out.print("next integer? ");
            integer[i] = sc.nextInt();
            if (integer[i] > 0 && integer[i] % 2 == 0) {
                sum += integer[i];
                if (integer[i] > max) {
                    max = integer[i];
                }
            }
        }
        System.out.println("even sum = " + sum);
        System.out.println("even max = " + max);
    }
}

两种方法都能解决超时问题,推荐用try-with-resources,它更安全,能避免因忘记关闭资源导致的类似问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:10:33