2013-10-12 83 views
-2

我正在嘗試使用增強型for循環打印出數組中的數據,但它帶有垃圾。請提前幫助,謝謝。增強環路打印不正確

ArrayList array = new ArrayList();

//For loop to input names 
    for(int i=0; i < 3; i++) 
    { 
     System.out.print("Enter name of Player " + i +":"); 
     String startName = keyboard.nextLine(); 
     System.out.print("Enter jersey number of Player " + i +":"); 
     int playNum = keyboard.nextInt(); 
     startName = keyboard.nextLine(); 

     //Make objects and add to array 
     HockeyPlayer p = new HockeyPlayer(startName, playNum); 
     array.add(p); 
    } 
    keyboard.close(); 

的循環中的代碼是:

System.out.println("The players are..."); 

     for(HockeyPlayer val : array) 
     { 
      System.out.println(val); 
     } 

它結束了印刷這樣的事情...我該如何解決呢?

Please enter the names and jersey numbers of 3 hockey players. 
Enter name of Player 0:Joeasdas 
Enter jersey number of Player 0:213 
Enter name of Player 1:Baskdja 
Enter jersey number of Player 1:121 
Enter name of Player 2:djasklaj 
Enter jersey number of Player 2:455 
The players are... 
[email protected] 
[email protected] 
[email protected] 
+0

爲什麼張貼同樣的問題兩次? –

+0

有人告訴我,如果我有另一個問題,我應該做一個不同的職位。在最後一個我不能添加對象到數組。 在這一個,我似乎無法讓它打印正確。 –

+0

20分鐘前,當你第一次發佈它時,我爲這個確切的問題寫了一個答案。當您刪除問題時,我只是發佈我的答案。對不起,我不能再打字了。如果你想讓別人幫你,不要把它們弄亂。 –

回答

0

您必須重寫HockeyPlayer類中的toString方法。例如:

public String toString() { 
    return number+" "+name; 
} 
+0

嗨,Joni。你能解釋一下這個工作如何?我試過使用它,但似乎只打印出數字。 –

+0

這是因爲你使用空名創建球員。看看你如何分配兩次startName? – Joni

0

HockeyPlayer @ 3f84246a表示您沒有toString方法重寫。 在HockeyPlayer只需要聲明的方法是這樣的:

@Override 
public String toString() 
{ 
    return "Your String"; 
} 
0

默認情況下從Object類印刷類的名字和其他一些NUMS的toString方法,你可以重寫它來打印你想要它打印東西,所以索性做這樣的事情:

@Override 
    public String toString() 
    { 
     return "returning something"; 
    }