Java新手使用arr.length-1操作数组异常无法生成目标序列问题求助
问题排查与解决方案
根因分析
你代码的核心错误是循环内的取值逻辑不符合需求:
- 你固定取
arr[arr.length -1]、arr[arr.length -2]、arr[arr.length -3]求和,由于你初始化的数组长度为10,这三个下标固定对应索引7、8、9,int数组未赋值的元素默认值为0,因此每次计算的结果都是0,导致下标3及之后的位置全被赋值为0。 - 你需要的是当前已经填充完成的最后三个元素求和,也就是和当前要赋值的
i+3位置相邻的前三个元素arr[i]、arr[i+1]、arr[i+2]。
修正后代码
package com.company; import java.util.Arrays; public class Main { public static void main(String[] args) { try { int [] arr = new int[10]; int number = 10; arr[0] = number; arr[1] = number; arr[2] = arr[0] + arr[1]; for(int i = 0; i < 7; i++){ arr[i + 3] = arr[i] + arr[i + 1] + arr[i + 2]; } for(int j =0; j < arr.length; j++){ System.out.print("\t" + arr[j]); } }catch (Exception e) { System.out.println("error is " + e); } } }
运行结果
修正后输出为:10 10 20 40 70 130 240 440 810 1490,和你预期的累加序列一致。
内容的提问来源于stack exchange,提问作者isfan
相关产品推荐
相关产品推荐

