有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组求和不正确,线程“main”java中出现异常。lang.ArrayIndexOutofBounds异常:100

我的数组大小是100,也就是数组[100]

我在做整个数组的和。我不知道我在哪里犯了错误

我的代码:

public void s(){
   // skipped portion of code
  float []array = new float[100]{1,2,3,...........100};
  sum (array);

  //skipped the portion of code
}
public void sum(float[] f){

        float sum=0;

            for(int z=1;z<=f.length;z++)
            {
                sum += f[z];
            }
            System.out.print("Ratio"+sum);

    }

没有求和,没有给出正确的打印输出


共 (5) 个答案

  1. # 1 楼答案

    java中的数组从索引0开始,在索引array.length-1结束。 你得到这个异常是因为你要求索引100或array.length,这比数组多了1个元素

    替换:

    for(int z=1;z<=f.length;z++)
                {
                    sum += f[z];
                }
    

    与:

    for (float num : f) {
        sum += num;
    }
    

    这是一种更简洁的数组迭代方式

  2. # 2 楼答案

    java中的数组a被索引为0到a.length-1,而在此循环中:

    for(int z=1;z<=f.length;z++)
    

    可以通过f.length访问元素1f[f.length]是不允许的。此外,这个错误是非常描述性的,如果你试图理解它,应该会有很大帮助

  3. # 3 楼答案

    Java数组索引从0开始,长度为-1,因此需要for (int z=0;i<f.length;z++)

  4. # 4 楼答案

    在for循环中,f.length将给出100,但数组的索引总是从0开始,直到99(总内存为100)

    将for循环更改为for(int z=0;z<f.length;z++)

  5. # 5 楼答案

    您没有以正确的方式定义数组。 使用这个: float[]数组={1,2,3,…,100}; 或者干脆 float[]数组=新的float[100],并用for循环填充它。 Java中的数组是0-index,所以循环应该从0到len-1