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

Java中如何仅显示3个数组的逻辑大小内容,消除打印的多余0.0

数组分类存储过滤默认空值解决方案

你现在需要将masterArray中的数值分类存入oddList(奇数数组)、negativeList(负数数组)、evenList(偶数数组)三个数组中,打印时要去掉未填充位置默认生成的0.0,只输出有效元素。首先你的原代码存在多处逻辑问题,需要先修复再处理空值过滤需求:

  • 三个数组共用同一个size计数变量,会导致存储位置完全混乱,无法正确分类
  • 判断逻辑顺序错误:负数也可能是奇数或偶数,现有逻辑会把负奇数、负偶数误归类到奇偶分组,不会进入负数判断分支
  • 冗余的嵌套for循环会导致同一元素被重复处理,oddList写入时用索引z而非对应计数,存在下标越界风险
  • 直接打印定长数组的全部内容,自然会显示未赋值位置的默认值0.0

方案1:保留定长数组结构,打印时截取有效片段

为每个数组单独维护计数变量,打印时只截取从0到计数长度的有效元素,自动过滤后面的0.0:

import java.util.Arrays;

public static void negoddeven(double masterArray[]){
    // 每个数组单独维护计数,避免写入位置混乱
    int oddSize = 0, negativeSize = 0, evenSize = 0;
    double[] negativeList = new double[10], oddList = new double[10], evenList = new double[10];

    for(int z = 0; z < masterArray.length; z++){
        double num = masterArray[z];
        // 优先判断负数,避免负奇偶值被错误归类
        if(num < 0){
            if(negativeSize < negativeList.length){
                negativeList[negativeSize] = num;
                negativeSize++;
            }
        } else if(num % 2 != 0){
            if(oddSize < oddList.length){
                oddList[oddSize] = num;
                oddSize++;
            }
        } else {
            if(evenSize < evenList.length){
                evenList[evenSize] = num;
                evenSize++;
            }
        }
    }
    // 截取有效长度后打印,自动过滤尾部的0.0
    System.out.print("\n奇数列表的有效元素为:" + Arrays.toString(Arrays.copyOf(oddList, oddSize)));
    System.out.print("\n负数列表的有效元素为:" + Arrays.toString(Arrays.copyOf(negativeList, negativeSize)));
    System.out.print("\n偶数列表的有效元素为:" + Arrays.toString(Arrays.copyOf(evenList, evenSize)) + "\n");
}

方案2:使用动态集合存储,无需手动处理长度

如果允许使用集合类,直接用ArrayList<Double>存储分类数据,会自动适配元素长度,不会生成多余默认值:

import java.util.ArrayList;

public static void negoddeven(double masterArray[]){
    ArrayList<Double> negativeList = new ArrayList<>();
    ArrayList<Double> oddList = new ArrayList<>();
    ArrayList<Double> evenList = new ArrayList<>();

    for(double num : masterArray){
        if(num < 0){
            negativeList.add(num);
        } else if(num % 2 != 0){
            oddList.add(num);
        } else {
            evenList.add(num);
        }
    }
    System.out.print("\n奇数列表的有效元素为:" + oddList);
    System.out.print("\n负数列表的有效元素为:" + negativeList);
    System.out.print("\n偶数列表的有效元素为:" + evenList + "\n");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:03