2011-03-17 165 views
1

我是Java新手,請幫助我。在ArrayList中設置()

我的計劃是

import java.util.*; 
import java.lang.*; 
class Test 
{ 
    public static void main(String[] args) 
    { 
     ArrayList al=new ArrayList(); 
     al.add("a"); 
     al.add("b"); 
     for(int i=1;i<=10;i++) 
     { 
      al.add(i); 
     } 
     al.remove("a"); 
     al.set(1,"c"); 
     for(int j=3;j<=al.size();j++) 
     { 
      al.set(j,"z"); 
     } 

     System.out.println(al); 
    } 
}; 

在上述任意錯誤........ plz幫助我

+5

問題是什麼性質?編譯或運行時?你期待代碼做什麼? – DaveH 2011-03-17 08:19:30

+1

如果您想在此提供任何建議,通常建議您發佈您收到的錯誤消息。 – Daniel 2011-03-17 08:21:44

回答

4

a)你需要讓公衆類運行它

public class Test 
{ 

b)最後一個分號是語法錯誤不,它不是,它只是不必要的噪音。

c)本失敗並IndexOutOfBoundsException

for(int j = 3; j <= al.size(); j++){ 
    al.set(j, "z"); 
} 

它需要:

for(int j = 3; j < al.size(); j++){ 
    al.set(j, "z"); 
} 

說明:列表索引是基於零的,所以在與列表中的最高位置n個元素是n-1


BTW,th Ë上面的代碼可以寫在一個更優雅的方式是這樣的:

Collections.fill(al.subList(3, al.size()), "z"); 

參考:

+1

分號應該沒問題。 – krock 2011-03-17 08:21:03

+0

我知道,我已經改變了。它沒有任何用處,它很混亂,但不會造成任何傷害 – 2011-03-17 08:22:15

1

此代碼將拋出因爲一個IndexOutOfBounds例外line:

for (int j = 3; j <= al.size(); j++) { 

解決它,你需要將其更改爲:

for (int j = 3; j < al.size(); j++) { 

這是因爲< =意味着你的for循環遍歷該列表的末尾。

0

List〜和Arrayindices從0開始,而不是1.因此,如果您有3個元素的列表,它們將從索引0,1,2開始。因此,您通常從(i = 0; i <列表中進行迭代。 size(); ++ i)。少於,不少於/相等。

for (int j=3; j < al.size(); j++) 
0

1.在最後一行

2.change代碼分號從

for(int j=3;j<=al.size();j++) 

for(int j=3;j<al.size();j++) 

ArrayList中總是從第0個從索引訪問以更少比數組的大小。

0

我覺得也有必要改變從3比2的起始索引:

 
for (int j=2; j < al.size(); j++) 
相關問題