我有一個很奇怪的問題,我有一個方法noOfPlayers,詢問遊戲中的玩家數量,一旦我有遊戲中的玩家數量,我要求他們的每個名字反過來。一旦我得到了玩家的名字,就會創建一個框架,要求他們指定他們想要選擇的計數器。當他們點擊紫色寶石(出於測試目的)時,它應該在控制檯中打印出玩家的名字,但for循環似乎不起作用。任何想法如何讓環路正常工作?來自for循環的打印元素
public class setupPlayers extends JFrame implements ActionListener {
int intOfPlayers, purpleClick = 0, orangeClick = 0, iceClick = 0, greenClick = 0;
ArrayList<Player> arrayOfPlayers = new ArrayList<Player>();
JButton purpleGemBTN, greenGemBTN, iceCubeBTN, orangeGemBTN;
JFrame organisationPanel;
JPanel titleChoiceCounter, counterSelector;
ImageIcon finalCounter;
private static Dialog d;
public setupPlayers() {}
public void noOfPlayers() {
try {
String inputValue = JOptionPane.showInputDialog("Please input the number of players");
intOfPlayers = Integer.parseInt(inputValue);
if (intOfPlayers > 4) {
JOptionPane.showMessageDialog(null, "Only 1-4 can play!", "Error!", JOptionPane.ERROR_MESSAGE);
noOfPlayers();
intOfPlayers = 0;
}
for (int z = 0; z < intOfPlayers; z++) {
String playerName = JOptionPane.showInputDialog("Player " + (z + 1) + " please input your name");
chooseCounter();
arrayOfPlayers.add(new Player(playerName, (z + 1), null, 0));
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "You did not enter the number of players, please enter the number of players", "Error!", JOptionPane.ERROR_MESSAGE);
noOfPlayers();
}
}
public void chooseCounter() {
Frame window = new Frame();
ImageIcon purpleGemImg = new ImageIcon("C:\\Users\\Anonymous\\Documents\\pink.png");
ImageIcon greenGemImg = new ImageIcon("C:\\Users\\Anonymous\\Documents\\yellow.png");
ImageIcon orangeGemImg = new ImageIcon("C:\\Users\\Anonymous\\Documents\\brown.png");
ImageIcon iceCubeImg = new ImageIcon("C:\\Users\\Anonymous\\Documents\\white.png");
d = new Dialog(window, "Please select your counter", true);
d.setLayout(new GridLayout(2, 2));
d.setLocation(400, 300);
d.setSize(500, 500);
purpleGemBTN = new JButton("purple", purpleGemImg);
greenGemBTN = new JButton(greenGemImg);
orangeGemBTN = new JButton(orangeGemImg);
iceCubeBTN = new JButton(iceCubeImg);
purpleGemBTN.addActionListener(this);
greenGemBTN.addActionListener(this);
iceCubeBTN.addActionListener(this);
orangeGemBTN.addActionListener(this);
d.add(purpleGemBTN);
d.add(greenGemBTN);
d.add(orangeGemBTN);
d.add(iceCubeBTN);
d.setVisible(true);
}
public static void main(String[] args) {
setupPlayers spObj = new setupPlayers();
}
public void actionPerformed(ActionEvent e) {
JButton pressed = new JButton();
pressed = (JButton) e.getSource();
if (pressed.getText().equals("purple")) {
for (int z = 0; z < arrayOfPlayers.size() - 1; z = z) {
String currentPlayer = arrayOfPlayers.get(z).playerNme;
System.out.println(currentPlayer);
}
d.setVisible(false);
}
}
}
未來的參考:當你說「它似乎不工作」解釋應該發生什麼以及發生了什麼。 –
我只注意到你遞歸調用'noOfPlayers();'我認爲你會得到一些意想不到的結果。 –
我該如何解決這個問題,如果他們輸入了一個無效的字符串數量的球員,不斷詢問球員的數量?那是我能想到做到的唯一方式。這是for循環不能正常工作的原因嗎? – Blueaddiction