如何从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
相关产品推荐
相关产品推荐

