2014-01-06 103 views
-2

我有一個字符串數組的問題,程序將使用名稱放在屏幕中。我做了一些編碼和創建2D遊戲和Android應用程序,但事實上我從來沒有使用數組來保存分數或什麼,現在我被卡住了,需要在下面學習它和代碼,想想它,因爲我們把拼貼學生的學位放在錯誤陣列犯錯誤,爲什麼下面的完整代碼,我無法弄清楚:字符串數組錯誤

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Chatlength = new String[10]; 

    for(i =0; i <= Chatlength.length ; i++){ 
     Scanner s = new Scanner(System.in); 
     String ss = s.nextLine(); 
     Chatlength[i] = ss; 


     } 
    while(true){ 
    if(i > Chatlength.length){ 
      int ints = 0; 
     while(ints <10){ 
      System.out.println("Name "+ints+": "+Chatlength[ints]); 
      ints++; 
     } 
    } 
    } 

它給了我和誤差Chatlength[i] = ss;

+4

嗯*它給了什麼*錯誤?你沒有足夠的時間不是寫一個壞問題的好理由。 –

回答

1

我猜你得到一個ArrayIndexOutOfBoundsException因您的循環邊界:

for(i =0; i <= Chatlength.length ; i++){ 

這應該是:

for (int i = 0; i < Chatlength.length; i++) { 

...使用局部變量decl而不是靜態變量,我假設你已經在代碼中聲明瞭你沒有向我們展示的靜態變量。

長度爲10的數組的有效索引爲0到9(含)。它很難很難當你試圖迭代一個集合時,你實際上想要<=作爲循環索引變量。 (Java中的所有標準集合都是基於0的,所以你幾乎總是希望擁有唯一的上限)。

此外,我強烈建議您開始遵循Java命名約定。

0

該病症是罪魁禍首。你要加上數組的大小。

i <= Chatlength.length 

將其更改爲

i < Chatlength.length 
0

檢查for - 循環:

for(i =0; i <= Chatlength.length ; i++) 

應該

for(i =0; i < Chatlength.length ; i++) 
0

你沒有先聲明數組:

Chatlength = new String[10]; //Wrong code; 

將其更改爲:

String[] Chatlength = new String[10]; 

然後Java是基於零的和應該使用這樣的:

for(i =0; i < Chatlength.length ; i++) 
+0

其實'Chatlength =新字符串[10];'很好。它可能是一個班級成員,它是'String []'。 – Maroun

0

沒有這樣的索引i = 10所創建的陣列,按您的條件循環中,它允許I = 10(ⅰ< = Chatlength.length)這是不是一個有效的陣列位置,因此你得到了異常