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

Java数组输出出现多余0值的原因及去除方法咨询

问题分析与解决方案

为什么会出现多余的0?

你的代码里有两个核心原因导致了这些0的出现:

  • 首先,int[] array1 = new int[temp.length()]; 你把数组长度设成了字符串temp的总长度("1 3 5 7 6"包含5个数字和4个空格,一共9个字符)。而Java中int类型数组初始化时,所有元素的默认值都是0。
  • 然后你的循环for (int i = 0; i < temp.length(); i += 2)只给索引为0、2、4、6、8的位置赋值,剩下的索引1、3、5、7的位置没被修改,所以保留了默认的0,最终输出就带上了这些多余的0。

怎么去除这些0?

正确的思路是先把字符串按空格分割成单独的数字字符串,再转换成int数组——这样数组长度正好是数字的数量,不会有多余的空位。修改后的代码如下:

import java.util.Arrays;

public class Q1102 {
    public static void main(String[] args) {
        String temp = "1 3 5 7 6";
        // 按空格分割字符串,得到每个数字的字符串数组
        String[] numStrs = temp.split(" ");
        int[] array1 = new int[numStrs.length];
        // 遍历转换每个字符串为int
        for (int i = 0; i < numStrs.length; i++) {
            array1[i] = Integer.parseInt(numStrs[i]);
        }
        System.out.println(Arrays.toString(array1));
    }
}

运行这段代码会输出:[1, 3, 5, 7, 6],完全符合你的需求。

如果想让代码更简洁,还可以用Java 8+的流操作一行完成转换:

import java.util.Arrays;

public class Q1102 {
    public static void main(String[] args) {
        String temp = "1 3 5 7 6";
        int[] array1 = Arrays.stream(temp.split(" "))
                             .mapToInt(Integer::parseInt)
                             .toArray();
        System.out.println(Arrays.toString(array1));
    }
}

效果和上面的代码完全一致,写法更精炼。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:28:41