数组没有正确记录来自 JOptionPane 的输入

Array not recording input from JOptionPane correctly

所以我想做的是创建一个按钮,允许我的游戏玩家输入他们希望参加锦标赛的玩家人数。然后他们输入竞争者的名字,这些名字被记录下来并存储在一个数组中供以后使用。我创建了一个 playerList 方法来检查它是否正确记录了名字,但它一直只返回一个名字。这让我相信我的 enterPlayers() 方法中的 for 循环只是将输入的名字添加到数组中。但是,我不确定为什么会这样。我打算稍后使用这些名称来安排玩家之间的比赛以在锦标赛中晋级,因此这是我项目的重要组成部分。如果有人可以提供帮助,将不胜感激。谢谢,祝你有美好的一天!

这里涉及到的代码:

    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;
      }
  }

问题是您要关闭此行中每个玩家的 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>";