您如何确定数组的合法索引范围?

时间:2019-03-09 21:11:19

标签: java arrays

我正在学习Java,并逐步完成了在陶森大学(Towson University)在线举办的练习,而我对此练习感到困惑。

代码如下:

import java.util.Scanner;

public class Overflow2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[]vals = new int[10];

        System.out.println("how many values should be stored in the array? ");
        int count = scan.nextInt();

        for (int i = 0; i < count; i++) {
            vals[i] = count - i ;
        }

        System.out.println("Which value do you wish to retrieve? ");
        int which = scan.nextInt();

        System.out.println("Your value is " + vals[which]);
    }
}

for (int i = 0; i < count; i++) {
    vals[i] = count - i ;
}

一个人如何确定合法指数范围?我假定,鉴于

int[]vals = new int[10];

索引范围将是数组的长度-1,即9,但这似乎不正确。解决方案的格式为

数字-等式运算符-i-等式运算符-数字

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

我假设...索引范围将是数组的长度-1,所以9,但这似乎是不正确的。

是正确的。合法索引为0到9(含0)。仅当用户输入10或更少时,该程序才能运行。如果他们输入的内容大于10,则会崩溃,并显示ArrayIndexOutOfBoundsException

如果您对术语学得太深,您就错了:确切地说,最大索引是9。一个 range 会有两个端点。您可以使用以下任意一种方式来描述范围:

  • 0-9
  • [0,10)
  • [0,9]
  • 0≤i≤9
  • 0≤i <10