Java三数组循环赋值异常:后续数组全为0的原因排查求助
问题分析与修复方案
核心错误原因
- 循环变量作用域问题:你没有在每个循环内部声明
i、j、k,导致这些变量在循环结束后依然保留最终值(第一个循环结束后i=49,第二个循环结束后j=49)。 - 数组索引误用:
- 第二个循环里误用了
value[i]而非value[j],此时i的值是49,但第一个循环仅给value[0]到value[48]赋了值,value[49]是float数组默认初始值0,平方后结果全为0。 - 第三个循环里误用了
valueSQ[j] + value[i]而非valueSQ[k] + value[k],此时j=49、i=49,对应数组元素都是0,求和结果自然全为0。
- 第二个循环里误用了
修复后的代码
int loopMax = 49; float[] value = new float[50]; float[] valueSQ = new float[50]; float[] sum = new float[loopMax]; // 仅需49个元素,对应前两个数组的有效元素 // 生成1-49填入value数组 for (int i = 0; i < loopMax; i++) { value[i] = i + 1; } // 计算平方填入valueSQ数组 for (int j = 0; j < loopMax; j++) { valueSQ[j] = (float) Math.pow(value[j], 2); } // 计算对应位置元素和填入sum数组 for (int k = 0; k < loopMax; k++) { sum[k] = valueSQ[k] + value[k]; System.out.println(sum[k]); }
额外优化提示
- 数组声明时显式加上类型(
float[] value),避免隐式变量引发的问题。 sum数组长度无需设为两个数组长度之和,对应有效元素数量设置为loopMax更合理。
内容的提问来源于stack exchange,提问作者NobleRuckus
相关产品推荐
相关产品推荐

