数组索引超出界限异常

Sav*_*pud 1 java

一直在环顾四周,看看是否有什么可以帮助我,但我不太了解人们的回答,我所理解的任何事情似乎都无法解决问题!所以基本上就像标题所说,我得到一个数组索引超出范围的异常,我不明白为什么.任何帮助是极大的赞赏.

码:

import javax.swing.*;

public class Array {
    public static void main(String[] args) {
        double height[] = new double[10];
        String heightAsString;
        int i, over18 = 0, under16 = 0;

        for(i = 1; i <= height.length; i++){
            heightAsString = JOptionPane.showInputDialog("Please Enter The Height Of Person " + i);
            height[i] = Double.parseDouble(heightAsString);

            if(height[i] > 1.8){
                over18 += 1;
            }

            if(height[i] < 1.6){
                under16 += 1;
            }
        }

        JOptionPane.showMessageDialog(null,"The Total Number Of People Over 1.8m Is: " + over18 +
        "\nThe Total Number Of People Under 1.6m Is: " + under16);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*oun 6

改成

i = 0; i < height.length
    ?    ?
Run Code Online (Sandbox Code Playgroud)

数组在Java中基于零.这意味着如果您有一个大小数组N,索引将在范围内[0, N - 1],请参阅The Java™Tutorials - Arrays:

数组中的每个项称为一个元素,每个元素都由其数字索引访问.如上图所示,编号从0开始.例如,第9个元素将在索引8处访问.

如果您有兴趣(推荐),请浏览JLS - 第10章.数组:

如果一个数组有n组件,我们说n是数组的长度; 使用从0到n-1(包括0和n-1)的整数索引引用数组的组件.


The*_*est 5

for(i = 1; i <= height.length; i++){
        heightAsString = JOptionPane.showInputDialog("Please Enter The Height Of Person " + i);
        height[i-1] = Double.parseDouble(heightAsString);

        if(height[i-1] > 1.8){
            over18 += 1;
        }

        if(height[i-1] < 1.6){
            under16 += 1;
        }
    }
Run Code Online (Sandbox Code Playgroud)

使用 height[i-1],因为数组索引从 0 开始。