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

如何从int数组中取值?Java数组赋值后出现零值问题咨询

问题分析与修正

错误原因纠正

你对Java数组的特性猜测有误:Java数组声明后长度不可修改,但已声明数组的元素值可以随意修改,你遇到的取值全为0的问题和数组特性无关,是代码逻辑错误导致的,也不需要强制使用ArrayList。

具体错误点

  • 数组初始化位置错误:你将new int[maxInput]语句放在了for循环内部,每次循环都会创建一个所有元素默认值为0的新int数组,覆盖掉变量newAr之前指向的数组,之前循环存储的数值会全部丢失
  • 最终仅单元素赋值:循环执行到最后一次(此时循环变量in=9)时,你新创建的数组仅给下标为9的位置赋值为9,其余9个位置都保持默认值0,因此遍历数组时只会输出9个0和1个9,数组长度始终为10是因为你每次创建的数组长度都是固定的10

修正后数组实现代码

public static void main(String[] args) throws Exception {
    // 定义生成数字的范围为0到9
    int minInput = 0;
    int maxInput = 10;
    // 把数组初始化移到循环外部,仅创建一次数组
    int[] newAr = new int[maxInput];

    for (int in = minInput; in < maxInput; in++) {
        // 直接修改已创建数组的元素值
        newAr[in] = in;
        System.out.println("打印数组当前位:" + newAr[in]);
    }

    System.out.println("数组长度:" + newAr.length);

    // 遍历数组取值
    for (int i : newAr) {
        System.out.println(i);
    }
}

可选的ArrayList实现方案

如果你需要使用长度动态变化的容器,可以选择ArrayList,示例代码如下:

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

public class Test {
    public static void main(String[] args) throws Exception {
        int minInput = 0;
        int maxInput = 10;
        List<Integer> numList = new ArrayList<>();

        for (int in = minInput; in < maxInput; in++) {
            numList.add(in);
            System.out.println("打印当前存入值:" + in);
        }

        System.out.println("列表长度:" + numList.size());
        for (int i : numList) {
            System.out.println(i);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:06:04