2013-10-12 85 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"; 
    }