Java如何生成1到n的奇数数组 输出含多余0错误如何解决
问题原因
- 你给出的
BasicJava类定义存在语法错误:类名后多写了一个英文冒号:,会直接导致编译失败,优先删除这个多余字符。 - 输出中出现交替
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
相关产品推荐
相关产品推荐

