2013-06-03 71 views
0

我已經聲明在一個類的二維陣列「S」,如下所示:列表索引超出範圍:0

public class TestClass { 

private static final List<List<Long>> S = new List<List<Long>>{}; 

Public TestClass { 
} 


public void setKey(string key, string keylength) { 
integer i, j 

for (i = 0; i < 4; ++i){   
     for (j = 0; j < 256; ++j){ 
    S[i][j] = 0; 
} 
} 
} 
} 

即時得到一個列表索引超出範圍:0在這一行:

S[i][j] = 0; 

似乎它沒有正確調用列表,

有人能告訴我什麼是錯的?

感謝

回答

1

我沒有在頂點代碼的任何經驗,但我猜你有沒有在代碼初始化列表的其他地方,或者至少不會被初始化內部列表。

有一個衆所周知的語言把這一背景下,如C#或Java,初始化會是這個樣子:

// ** NOTE: Pseudo-code ** 
// Loop over the outer List first 
for (i = 0; i < 4; ++i){   
    // Initialise each List index as a new List, storing 256 integers. 
    S[i] = new List<long>(new int[256]); 

     // Loop over the newly initialised inner List, setting the int values. 
     for (j = 0; j < 256; ++j){ 
      S[i][j] = 0; 
     } 
    } 
} 
+0

其實這個循環被假設是對數組的初始化步驟。我做錯了嗎? – user2333346

+0

你的意思是在你的外部循環定義中很長的NOT整數。但是我得到了你給我的代碼行同樣的錯誤S [i] = new List (new long [256]);它告訴我「列表索引超出範圍:0」 – user2333346

+1

這意味着'S [0]'還沒有初始化。你必須初始化你聲明它的外部數組(用'new ...') – Greg