数组没有正确记录来自 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>";
所以我想做的是创建一个按钮,允许我的游戏玩家输入他们希望参加锦标赛的玩家人数。然后他们输入竞争者的名字,这些名字被记录下来并存储在一个数组中供以后使用。我创建了一个 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>";