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

Java打印0-100奇偶数字结果末尾出现101的问题如何解决?

问题原因

你代码里多余的101来自两处多余的打印语句,具体逻辑如下:

  • 你定义的oddNumbers、evenNumbers方法内部已经通过System.out.print直接打印了所有符合要求的数字,循环结束时触发退出条件start <= 100不成立,此时start的值已经自增到了101,方法最终返回的就是101。
  • 你在main方法调用两个方法后,又额外执行了System.out.println(evenNums)、System.out.println(oddNums),把方法返回的101打印了出来,就是你看到的末尾多余数字。

解决方法

方案一:直接删掉多余打印语句(改法最简单)

因为两个方法本身已经完成了打印逻辑,不需要再打印返回值,直接删掉main里的两行打印返回值的代码即可,同时可以把方法返回值改为void省略无用的return逻辑,顺便优化原方法里写死的循环条件,复用传入的end参数:

public class act1 {
    public static void main(String[] args) {
        int start = 0;
        int end = 100;
        System.out.println("List of EVEN numbers");
        evenNumbers(start, end);

        System.out.println("\nList of ODD numbers");
        oddNumbers(start, end);
    }

    static void oddNumbers(int start, int end) {
        for (int i = start; i <= end; i++) {
            if (i % 2 != 0) {
                System.out.print(i + " ");
            }
        }
    }

    static void evenNumbers(int start, int end) {
        for (int i = start; i <= end; i++) {
            if (i % 2 == 0) {
                System.out.print(i + " ");
            }
        }
    }
}

方案二:调整逻辑为方法返回结果集合,由main统一打印

如果你希望方法只负责计算结果、不直接打印,就把结果存到集合中返回,再在main方法里打印:

import java.util.ArrayList;
import java.util.List;

public class act1 {
    public static void main(String[] args) {
        int start = 0;
        int end = 100;
        System.out.println("List of EVEN numbers");
        List<Integer> evenNums = evenNumbers(start, end);
        evenNums.forEach(num -> System.out.print(num + " "));

        System.out.println("\nList of ODD numbers");
        List<Integer> oddNums = oddNumbers(start, end);
        oddNums.forEach(num -> System.out.print(num + " "));
    }

    static List<Integer> oddNumbers(int start, int end) {
        List<Integer> res = new ArrayList<>();
        for (int i = start; i <= end; i++) {
            if (i % 2 != 0) {
                res.add(i);
            }
        }
        return res;
    }

    static List<Integer> evenNumbers(int start, int end) {
        List<Integer> res = new ArrayList<>();
        for (int i = start; i <= end; i++) {
            if (i % 2 == 0) {
                res.add(i);
            }
        }
        return res;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:06:03