Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-array';s索引超出范围,而它不是?_Java_Arrays - Fatal编程技术网

Java-array';s索引超出范围,而它不是?

Java-array';s索引超出范围,而它不是?,java,arrays,Java,Arrays,我在下面的代码中有一个问题: /* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { public static void main (String[]

我在下面的代码中有一个问题:

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
    public static void main (String[] args) throws java.lang.Exception {
        int[] map = new int[100 * 100];
        System.out.println("Works : " + map[10 * 100 + 5]);
        System.out.println("Works? : " + map[99 * 100 + 99]);
        System.out.println("Works?! : " + map[20 * 100 + 100]);
        //System.out.println("And this?? : " + map[99 * 100 + 100]);
    }
}
如你所见,最后一行(注释)不起作用;它抛出一个
ArrayIndexOutOfBoundsException

但我不明白;它应该在数组的边界内。数组的大小是
100*100
so
99*100+100=100*100
so索引
100*100
在数组中

我已经解决了这个问题;我只是想知道为什么我在上面这一行遇到了一个例外


代码链接:

它抛出该异常,因为数组的索引是从
0
length-1

因此,如果您声明它的长度为100*100,那么索引的范围是从
0
100*100-1

你试过的是:

map[99 * 100 + 100]
等于

map[100*100]

它会抛出该异常,因为数组的索引是从
0
length-1

因此,如果您声明它的长度为100*100,那么索引的范围是从
0
100*100-1

你试过的是:

map[99 * 100 + 100]
等于

map[100*100]
无法访问。

为0基本索引

因此,您可以从索引
0
map.length-1
访问map中的元素

即:
map[0]
to
map[100*100-1]

或者
99*100+100=10000>9999
,这就是为什么您得到了
IOOBE

是0基索引

因此,您可以从索引
0
map.length-1
访问map中的元素

即:
map[0]
to
map[100*100-1]

或者
99*100+100=10000>9999
,这就是为什么您得到了
IOOBE


您正在尝试访问地图[10000]。数组索引以0开头,因此大小为10000的数组表示0到9999。

您正在尝试访问Map[10000]。数组索引以0开头,因此大小为10000的数组表示0到9999。

ok注释太多。。是的,我就是这么想的,只是想确定一下,谢谢并在9分钟内接受了:D确定太多评论。。是的,我就是这么想的,只是想确定一下,谢谢,9分钟后接受了:D