Java筛选随机数中的奇数并存入新数组的代码问题求助
代码问题梳理与修正方案
你的代码目前有几个核心问题,导致无法实现"筛选随机数中的奇数并存入新数组"的需求:
- 没有对生成的随机数做奇数判断,直接打印了所有随机数,完全没完成筛选逻辑
t[i] = 2 * i + 1;这行代码完全错误,它不是筛选已有随机数里的奇数,而是把原数组元素替换成了一个固定奇数序列,完全偏离需求- 新数组长度硬编码为8,无法适配不同输入下的奇数数量(比如输入5时可能只有2个奇数,输入1000时可能有几百个)
下面是修正后的完整代码,每一步都贴合你的需求:
import java.util.Scanner; public class Array { public static void main(String[] args) { System.out.print("Please enter number : "); Scanner input = new Scanner(System.in); int n = input.nextInt(); int[] randomNumbers = new int[n]; // 第一步:生成n个0-998的随机数存入原数组 for (int i = 0; i < randomNumbers.length; i++) { randomNumbers[i] = (int)(Math.random() * 999); } // 第二步:先统计原数组中奇数的数量,为新数组确定长度 int oddCount = 0; for (int num : randomNumbers) { if (num % 2 != 0) { // 判断奇数:对2取余不等于0 oddCount++; } } // 第三步:创建对应长度的新数组,筛选并存储奇数 int[] oddNumbers = new int[oddCount]; int currentIndex = 0; System.out.println("These are the generated Odd numbers : "); for (int num : randomNumbers) { if (num % 2 != 0) { System.out.println(num); // 打印符合条件的奇数 oddNumbers[currentIndex++] = num; // 将奇数存入新数组 } } // 可选:验证新数组的存储结果(不需要可以删除这段) System.out.println("\nStored odd numbers in new array:"); for (int odd : oddNumbers) { System.out.print(odd + " "); } input.close(); // 关闭Scanner,避免资源泄漏 } }
关键改动说明
- 变量命名优化:把
t改成randomNumbers,array改成oddNumbers,让代码可读性更强 - 添加奇数判断逻辑:用
num % 2 != 0准确判断奇数,只有满足条件的数才会被打印和存入新数组 - 动态确定新数组长度:先遍历原数组统计奇数数量
oddCount,再创建对应长度的新数组,避免硬编码长度的适配问题 - 移除错误代码:删掉了
t[i] = 2 * i + 1;这行完全不符合需求的代码 - 资源清理:添加
input.close();关闭Scanner,养成良好的编码习惯
测试示例(输入5):
Please enter number : 5 These are the generated Odd numbers : 131 685 Stored odd numbers in new array: 131 685
内容的提问来源于stack exchange,提问作者imaginarygirl12
相关产品推荐
相关产品推荐

