2011-03-11 189 views
2

這次我想打印一個數組,從頭到尾。Java中的打印陣列

這是我寫的:

public class Arrays { 
public static void main (String[] args){ 
    for (int i = args.length; i >=0; i--){ 
     System.out.print(args[i]+" "); 
    } 
} 

,這是錯誤消息: 異常線程 「main」 java.lang.ArrayIndexOutOfBoundsException:4 在Assignment02Q04.main(Assignment02Q04.java:5) 。

仍然有一個很難實現Eclipse的錯誤notifactions。 我很樂意提供協助。

+0

我只是想指出,我輸入這種形式的數組號: {1 2 3 4},在運行配置選項卡。 – 2011-03-11 15:22:26

+1

數組基於零 - 不應該從args.length - 1開始?如果數組有4個條目,其長度將爲4,並且其元素將被索引爲0,1,2和3 – DaveH 2011-03-11 15:22:36

+0

您是否嘗試過args.length -1?數組是基於0的,所以array [1]是它的第二個元素。如果長度是15,那麼最後一個元素是數組[14] – Robert 2011-03-11 15:24:25

回答

10

在Java數組開始0。所以長度5的陣列具有與索引0 to 4

以下語句從5 to 0

for (int i = args.length; i >=0; i--) 

環(爲大小爲5的陣列)

更改它元素來

for (int i = args.length-1; i >=0; i--) 

和賓果! PS:其實你一直循環到0,所以你可能已經知道數組開始於0

+0

謝謝你nivas! – 2011-03-11 15:25:47

3

Java使用0索引數組,所以你args.length需要考慮到這一點;你應該從一開始:

for (int i = args.length-1; i >=0; i--){ 
+0

謝謝Kvista! – 2011-03-11 15:27:20

3

你幾乎在那裏。你需要從int i = args.length - 1開始,因爲數組索引從0開始,並且數組的最後一個元素始終爲長度減1.

+0

謝謝亞當! – 2011-03-11 15:29:52

3

由於數組從起始索引0開始,因此最後一個元素位於位置args.length - 1。 您正在嘗試訪問array.length中的元素,因此是ArrayIndexOutOfBoundsException

只要改變int i = args.lengthint i = args.length - 1

順便說一句,這些都不是「日蝕錯誤notifactions」,他們是Java異常:)

+0

謝謝索林! – 2011-03-11 15:30:16

3

數組。長度給出元素的個數數組(從1開始)中,但數組的下標開始爲0,所以在第一次迭代嘗試訪問args[4]當最後一個元素實際上是args[3]和數組的大小是4

更改您的代碼:

for(int i = args.length - 1; i >= 0; i--) 

,你會被罰款

+0

謝謝戴夫! – 2011-03-11 15:24:27

+0

你忘了-1在args.length我相信 – Robert 2011-03-11 15:26:19

+0

@羅伯特好電話,謝謝 – 2011-03-11 16:17:27

2

你做ARGS(args.length)那是無效的,你去的地方後,最後在數組中。 一個開始於0,然後進直到長度 - 1

3

可以訪問直到(length - 1)在陣列

一個被索引0的陣列,其是{a, b, c}, ,b爲1,c爲2,長度爲3但你不能在第三位訪問數組。

+0

謝謝你Vadiklk! – 2011-03-11 15:26:48

+0

你應該嘗試做「Tohna 1」HW自己btw。 – Vadiklk 2011-03-11 15:27:42

+1

我試圖在沒有任何成就的情況下意識到什麼是錯誤的。我自己做,沒有別人學習的危害。 – 2011-03-11 15:33:55

3

Array索引從0開始。因此,最後一個索引是長度-1。

當你有具有5個元素的陣列,那麼最後一個具有索引4

你的環必須是

for (int i = args.length-1; i >=0; i--){ 
3

運行您的環路(這是在foreach語法)

for(String s : args) { 
    System.out.print(s + " "); 
} 

代替。數組枚舉從0開始並以array.length - 1結束。異常還會告訴您什麼是引發異常時的元素編號。

3

如果你要這樣做你的循環,你將不得不從args.length - 1開始這樣想,如果你有一個單個元素的數組長度將返回1,唯一可訪問的索引將是根據您的代碼,您將從索引1開始,因此ArrayIndexOutOfBoundsException。

3

關閉!這只是這一行:

for (int i = args.length; i >=0; i--) { 

需要更改爲:

for (int i = args.length-1; i >=0; i--) { 

爲什麼? Java中的數組(以及大多數語言)從0開始,以1結尾。所以如果你有一個長度爲3的數組,那麼有效索引將是0,1和2.長度爲3的索引將是無效的,因此會引發異常,這正是Java所抱怨的。

3

在java數組中的索引從0開始。 例如,args包含4個元素,它們的索引將是0,1,2,3,但agrs.length是4.您試圖獲取元素,該元素位於數組之外。

int i = args.length - 1 // will work 
+0

謝謝Max! – 2011-03-11 15:43:50

3

所有其他的答案是正確的,但這裏是另一種方式在Java中(相同的複雜順序)這樣做

List<String> asList = Arrays.asList(args); 
    Collections.reverse(asList); 
    for (String arg : asList) { 
     System.out.println(arg + " "); 
    } 

它橫貫而不是兩次一次,但如果你需要數組留逆轉以備後用,這是更好的

+0

我會記住這個!謝謝。 – 2011-03-11 15:48:04

1

你太高指數開始:

只需更換I = args.length其中i = args.length - 1

啊我記得我tohna 1第二個練習:)

+0

謝謝弗拉德! :) – 2011-03-11 15:42:57