簡體   English   中英

java - 數組索引超出范圍

[英]java - Array index is out of bounds

為什么這段代碼會顯示錯誤信息 java.lang.ArrayIndexOutOfBoundsException: -2146737495!! 我認為數組的大小已經足夠了。

class Main {
static int[] ara = new int[1000010];


public static void seive(){
    for(int i = 0; i <= 1000000; i++)
        ara[i] = 0;
    ara[1] = 1;

    for(int i = 2; i <= 1000000; i ++)
    {
        if(ara[i] == 0)
        {
            for(int j = i * i; j <= 1000000; j += i)
                ara[j] = 1;
        }
    }
}
public static void main(String[] args)
{
    seive();
}

}

Java 數組的大小首先受內存限制,然后受Integer.MAX_VALUE

您正在數組位置傳遞Integer.MAX_VALUE

但是值-2146737495是負數,為什么??? .

因為Integer.MAX_VALUE + 1 = Integer.MIN_VALUE

你在做: j = i * i 當我用這段記錄代碼時:

for(int j = i * i; j <= 1000000; j += i)
{
     System.out.println("i: " + i + " -j: " + j);
     ara[j] = 1;
}

我得到這個輸出:

i: 997 -j: 997000
i: 997 -j: 997997
i: 997 -j: 998994
i: 997 -j: 999991
i: 46349 -j: -2146737495

j = i * i(將是 -2146737495)拋出異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM