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
so99*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]
tomap[100*100-1]
或者99*100+100=10000>9999
,这就是为什么您得到了IOOBE
是0基索引
因此,您可以从索引0
到map.length-1
访问map中的元素
即:map[0]
tomap[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