2017-05-26 9 views
1

私は何をしようとしているのですか?自分のトーナメントで競合するプレイヤーの数を入力するボタンを作成します。その後、彼らは後で使用するために記録され、アレイに格納される競争相手の名前を入力します。名前を正しく記録しているかどうかを調べるためにplayerListメソッドを作成しましたが、名前は1つしか返されません。これは、私のenterPlayers()メソッドのmy 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

問題はありません。それは起こる。 –

関連する問題