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

Java如何生成1到n的奇数数组 输出含多余0错误如何解决

问题原因

  1. 你给出的BasicJava类定义存在语法错误:类名后多写了一个英文冒号:,会直接导致编译失败,优先删除这个多余字符。
  2. 输出中出现交替0的核心原因是数组下标赋值逻辑和数组长度不匹配:你当前贴出的代码逻辑本身理论可运行,但结合输出来看,你实际运行的代码大概率是将奇数直接存入了和n等长的数组的i下标位置,而非顺序存入短数组的递增下标位置,导致偶数下标位置保留了数组默认的0值。

修正后的代码

数组实现版本

import java.util.Arrays;

public class BasicJava {
    public Integer[] arrayOfOdds() {
        int n = 255;
        // 数组长度为1到255的奇数总个数:(255+1)/2=128
        Integer[] odds = new Integer[(n + 1) / 2];
        // 单独维护数组下标,避免计算失误
        int index = 0;
        for(int i = 1; i <= n; i += 2) {
            odds[index] = i;
            index++;
        }
        return odds;
    }
}

ArrayList实现版本(你偏好的数据结构)

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

public class BasicJava {
    public Integer[] arrayOfOdds() {
        int n = 255;
        List<Integer> oddList = new ArrayList<>();
        for(int i = 1; i <= n; i += 2) {
            oddList.add(i);
        }
        // 转数组返回
        return oddList.toArray(new Integer[0]);
    }
}

测试代码无需调整

import java.util.Arrays;

public class BasicJavaTest {
    public static void main(String[] args) {
        BasicJava test = new BasicJava();
        System.out.println(Arrays.toString(test.arrayOfOdds()));
    }
}

输出说明

修正后输出会得到从1开始到255的连续奇数数组,前缀为[1, 3, 5, 7, 9, 11, ... , 255],不会再出现间隔的0值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:27:05