2013-05-09 78 views
8

我是java新手,仍在學習,所以請牢記這一點。我試圖編寫一個程序,用戶可以在其中輸入關鍵字,並將其轉換爲數字並將其放入數組中。我的問題是數組需要不斷重複int的。重複Java數組

我的代碼是:

String keyword=inputdata.nextLine(); 
int[] key = new int[keyword.length()]; 
for (int k = 0; k < keyword.length(); ++k) 
{ 
    if (keyword.charAt(k) >= 'a' && keyword.charAt(k) <= 'z') 
    { 
     key[k]= (int)keyword.charAt(k) - (int)'a'; 
    } 
} 

現在,如果我試圖讓任何key[i]比它拋出一個outofbounds錯誤keyword.length更高。我需要它是無限的。

所以基本上,如果keyword.length()是3我需要能夠看到key[2]是否與key[5]key[8]等相同。

感謝您的幫助!

+0

not ++ k,但是k + = keyword.length(); – Hydroid 2013-05-09 18:02:09

+0

是否有意爲之,將某些元素保留爲0? – hyde 2013-05-09 18:11:49

回答

4

嗯,最簡單的做法是先修改一些代碼。提取的keyword.charAt(k)所有使用到的局部變量:

for (int k = 0; k < keyword.length(); ++k) 
{ 
    char c = keyword.charAt(k); 
    if (c >= 'a' && c <= 'z') 
    { 
     key[k] = c'a'; 
    } 
} 

然後我們可以用%運營商解決問題:

// I assume you actually want a different upper bound? 
for (int k = 0; k < keyword.length(); ++k) 
{ 
    char c = keyword.charAt(k % keyword.length()); 
    if (c >= 'a' && c <= 'z') 
    { 
     key[k] = c - 'a'; 
    } 
} 

這是假設你實際上使key長於keyword - 你可能想也改變循環的上界。例如:

int[] key = new int[1000]; // Or whatever 
for (int k = 0; k < key.length; ++k) 
{ 
    char c = keyword.charAt(k % keyword.length()); 
    if (c >= 'a' && c <= 'z') 
    { 
     key[k] = c - 'a'; 
    } 
}