嵌套for循环未输出25组i值问题求助(附代码及输出)
问题分析与修复方案
看起来你遇到的核心问题是数组越界异常导致程序提前终止,所以没能输出预期的25组i结果。咱们一步步拆解问题:
关键错误点
你的内部循环里误用了X[i],但先看你的X数组定义:
int X[] = {1,2,3,5,10,20,30,40};
它的长度只有8,索引范围是0-7。而内部循环的i会从0循环到24(因为i < 25),当i=8时,访问X[i]就会抛出ArrayIndexOutOfBoundsException,程序直接中断,自然不会继续输出后面的i值。
而且从逻辑上看,外层循环是遍历X[j],内部计算时应该用当前的X[j],而不是X[i]——这大概率是个笔误!
修正后的代码
把内部循环里的X[i]全部替换成X[j],同时确保所有用到的数组长度至少为25,避免其他越界问题:
int X[] = {1,2,3,5,10,20,30,40}; // 提前初始化所有数组,确保长度≥25 float[] K1 = new float[25]; float[] K2 = new float[25]; float[] C1 = new float[25]; float[] A1 = new float[25]; float[] D1 = new float[25]; float[] Xk1 = new float[25]; float[] C2 = new float[25]; float[] A2 = new float[25]; float[] D2 = new float[25]; float[] Xk2 = new float[25]; for(int j=0;j<X.length;j++) { System.out.println("J: "+j+":"+X[j]); for (int i=0; i < 25; i++) { // 给i加上int声明,避免编译报错 K1[i] = (float) (((C1[i] * (Math.pow(X[j], A1[i]))) + (D1[i] * Math.tanh(X[j]/(Xk1[i] - 2))) - Math.tanh(-2)) / (1 - Math.tanh(-2))); System.out.println("k1: "+i+":"+K1[i]); K2[i] = (float) (((C2[i] * (Math.pow(X[j], A2[i]))) + (D2[i] * Math.tanh(X[j]/(Xk2[i] - 2))) - Math.tanh(-2)) / (1 - Math.tanh(-2))); System.out.println("k2: "+i+":"+K2[i]); } }
额外注意事项
- 原代码里内部循环的
i没有声明类型(for (i=0;...),在Java中如果没有全局变量i会编译报错,建议加上int声明。 - 运行前确认
C1、A1、D1等所有数组都已正确初始化,且长度足够容纳25个元素,否则仍可能出现越界问题。
这样修改后,程序就能正常遍历每个j对应的25组i,输出完整的预期结果了。
内容的提问来源于stack exchange,提问作者swap
相关产品推荐
相关产品推荐

