2017-05-26 30 views
1

所以我试图做的是创建一个按钮,让我的游戏玩家输入他们想要在他们的比赛中竞争的玩家数量。然后他们输入获得记录的竞争者的名字并存储在一个数组中供以后使用。我创建了一个playerList方法来检查它是否正确记录了名字,但它只返回一个名字。这使我相信,我的enterPlayers()方法中的for循环仅添加了输入到数组中的名字。但我不知道为什么会这样。我打算稍后使用这些名字来设置比赛中晋级球员之间的比赛,所以这是我的项目的重要组成部分。如果有人可以帮助它,将不胜感激。谢谢,祝你有美好的一天!阵列没有正确记录来自JOptionPane的输入

这里是参与这个代码:

public void playerList() 
    { 
     JFrame frame = new JFrame("The Competitors"); 
     JPanel panel = new JPanel(); 
     JButton returnToMenu = new JButton ("Return to menu"); 
     String competitors = "<html><h1><font size=25 color=red> Your competitors are:<br>"; 
     for (int i = 0; i<tournament.length; i++) 
     { 
      competitors+= (i+1) + ". " + tournament[i] + "<br></font></h1></html>"; 
     } 
     JLabel overText = new JLabel(competitors); 
     returnToMenu.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent event) 
      { 
       sound11.play(); 
       frame.dispose(); 
      } 
     }); 
     panel.add(returnToMenu); 
     panel.add(overText); 
     frame.getContentPane().setBackground(Color.black); 
     frame.add(overText, BorderLayout.NORTH); 
     frame.add(panel); 
     frame.setSize(800, 340); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     sound13.loop(); 
    } 

    public void enterPlayers() 
    { 
     String number = JOptionPane.showInputDialog("Enter number of players "); 
     int a = Integer.parseInt(number); 
     numPlayers = a; 
     JOptionPane.showMessageDialog(null, "Number of players = " + numPlayers); 
     while (numPlayers>10 || numPlayers<2 || ((numPlayers>2 && numPlayers<=10) && numPlayers%2!=0)) 
     { 
      if (numPlayers>10) 
      { 
       JOptionPane.showMessageDialog(null, "Enter no more then 10 players"); 
      } 
      else if (numPlayers<2) 
      { 
       JOptionPane.showMessageDialog(null, "You must have more then 2 players"); 
      } 
      else if ((numPlayers>2 && numPlayers<=10) && numPlayers%2!=0) 
      { 
       JOptionPane.showMessageDialog(null, "You must have an even number of players"); 
      } 
      String number1 = JOptionPane.showInputDialog("Enter number of players "); 
      int b = Integer.parseInt(number1); 
      numPlayers = b; 
      JOptionPane.showMessageDialog(null, "Number of players = " + numPlayers);   
     } 

     tournament = new String[numPlayers]; 

     for (int i = 0; i<numPlayers; i++) 
     { 
      String name = JOptionPane.showInputDialog("Enter Player " + (i+1) + " name: "); 
      String player = "Player " + (i+1) + " is: " + name; 
      JOptionPane.showMessageDialog(null, player); 
      tournament[i] = name; 
     } 
    } 
+0

tl; dr .......... –

+0

Oops张贴了太多的代码。让我为你缩短它。我的错。我没有看到 –

+0

修复了它。对不起 –

回答

4

的问题是你关闭HTML上每一个球员在这条线:

for (int i = 0; i<tournament.length; i++) 
{ 
    competitors += (i+1) + ". " + tournament[i] + "<br></font></h1></html>"; 
} 

你应该这样做,而不是:

for (int i = 0; i<tournament.length; i++) 
{ 
    competitors += (i+1) + ". " + tournament[i] + "<br>"; 
} 

competitors += "</font></h1></html>"; 
+0

啊愚蠢的错误。我不相信我没有接受。谢谢你 –

+0

没问题。它发生了。 –