问题基本上是标题....为什么这个程序不喜欢我:3我继续得到“ArrayIndexOutofBoundsException”
public static void main(String[] args) {
double[] l1 = {1.2, 3.4, 1.2, 3.4, 1.1};
double[] l2 = {1.2, 1.3, 1.4, 1.5, 1.6};
isSorted(l1);
isSorted(l2);
}
public static void isSorted(double[] l1){
Scanner in = new Scanner(System.in);
if (l1[2]>l1[1])
if(l1[3]>l1[2])
if(l1[4]>l1[3])
if(l1[5]>l1[4])
System.out.println("True");
else
System.out.println("False");
}
是因为我预先填充了阵列吗?
edit2:忽略扫描仪。
编辑3:哇。好的。索引从0开始,我是个白痴!
感谢。 -_-
答案 0 :(得分:1)
请注意这一点
if(l1[5]>l1[4])
但l1
数组中只有5个值。但是你可以访问l1[5]
l1[0],l1[1],l1[2],l1[3],l1[4]
这些都是五个值,但您访问l1[5]
,因此会引发异常。
答案 1 :(得分:1)
java中的数组是0-base。这意味着您无法访问案例中的索引5。 如果你使用java,最好使用List的接口的一些实现。
我只是想知道您花了多少时间来调试代码。 (在你的情况下,仅仅打印元素就足以实现数组基于零。)
答案 2 :(得分:0)
java中的数组是使用基于0的计数完成的。这意味着数组中的第一个元素是l1[0]
。因此,使用l1[5]
的代码行意味着您访问超出范围的元素。
答案 3 :(得分:0)
Java中的数组索引和大多数语言从0开始:
if ((l1[1]>l1[0]) && (l1[2]>l1[1]) && (l1[3]>l1[2]) && (l1[4]>l1[3]))
System.out.println("True");
else
System.out.println("False");