2017-02-17 15 views
0

Я пытаюсь создать цикл for, который позволяет пользователю вводить несколько имен игроков (до 6) и хранить имя каждого игрока в переменной (playerone, playertwo и т. Д.) И между ними введите имя пользователя, которому требуется ввести имя другого игрока. Я написал цикл for, но не могу понять, как назначить каждый ввод строковой переменной. Если пользователь выбирает «Нет» в диалоговом окне, он должен разорвать цикл for.Множественный ввод имени в JOptionPane

if (text.equals(play)) { 
    { 
     { 
      String Playerone = JOptionPane.showInputDialog(null, "Enter Player 1:"); 
      textArea.append("Player 1: " + Playerone); 

      for (i = 2; i <= 6; i++) { 
       int n2 = JOptionPane.showConfirmDialog(null, "Enter another player?", "", 
         JOptionPane.YES_NO_OPTION); 

       if (n2 == JOptionPane.YES_OPTION) { 
        JOptionPane.showInputDialog(null, "Enter Player " + i + "\n"); 
        textArea.append("Player " + i + ":" + "\n"); 

       } 
       if (n2 == JOptionPane.NO_OPTION) { 

       } 
      } 

     } 
    } 
} 
+0

@OusmaneMahyDiaw Это более 500 строк кода этого не очень практично –

+0

У вас все есть. 'String Playerone = JOptionPane.showInputDialog (null," Enter Player 1: ");' <- отвечает на ваш первый вопрос. Второй, просто напишите 'break;' в no if-statement. – Squiddie

ответ

0
if (n2 == JOptionPane.YES_OPTION) { 
    JOptionPane.showInputDialog(null, "Enter Player " + i + "\n"); 
    textArea.append("Player " + i + ":" + "\n"); 

}else 
if (n2 == JOptionPane.NO_OPTION) { 
    break; 
} 

заменить сослагательное наклонение в цикл с этим, и он должен работать. вы не можете иметь имена динамических переменных. используйте любой тип списка или массив для этого

+0

Каков наилучший способ присвоения каждому вводу имени переменной (playerone, playertwo и т. Д.), Поскольку каждое имя пользователя должно быть назначено одной из этих переменных. –

+0

сначала вы можете сохранить их в массиве, а затем вы должны инициализировать переменная для каждого игрока, поэтому у вас есть x строк в конце. НО намного лучше использовать массив во всей вашей программе. – XtremeBaumer

0

Просто используйте оператор break для выхода из цикла.

Используйте ArrayList для хранения всех имен в переменной.

Класс Java ArrayList использует динамический массив для хранения элементов.

ArrayList<String> userNames=new ArrayList<String> 

if (n2 == JOptionPane.YES_OPTION) { 
    String playerName = JOptionPane.showInputDialog(null,"Enter Player " + i + ":"); 
    userNames.add(playerName); 
}else if(n2 == JOptionPane.NO_OPTION){ 
    break; 
} 

Iterate ArrayList в Java

int i=1; 
for(String name:userNames){ 
    System.out.println("Player"+i+" : "+name); 
    i+=1; 
} 
0

JOptionPane.showInputDialog возвращает строку, когда пользователь нажимает ОК, в противном случае он будет возвращать нуль.

«Я написал цикл, но не может понять, как назначить каждый вход в строку переменной»

String Playerone = JOptionPane.showInputDialog(null,"Enter Player 1:"); 

я могу увидеть вы знаете, как присвоить каждому значение строковой переменной, Дон» t быть неуверенным в своих возможностях, если вы не скопировали этот код где-нибудь, не понимая его. Поскольку у нас есть несколько игроков, я использую строковый массив для хранения ввода.

Чтобы ответить на ваш второй вопрос, чтобы выйти из вашего цикла, просто введите break;

В заключение, мы должны иметь что-то вроде этого:

String Playerone = JOptionPane.showInputDialog(null,"Enter Player 1:"); 
textArea.append("Player 1: " + Playerone); 

String[] playernames = new String[5]; 

for(i=2; i<=6;i++) { 

    int n2 = JOptionPane.showConfirmDialog(null,"Enter another player?" ,"",JOptionPane.YES_NO_OPTION); 

    if(n2 == JOptionPane.YES_OPTION) { 
     playernames[i-2] = JOptionPane.showInputDialog(null, "Enter Player "+ i + "\n"); 
     textArea.append("Player " + i + ":" + "\n"); 


    } 
    else if(n2 == JOptionPane.NO_OPTION) { 
      break; 

    } 
} 
+0

Спасибо за эту помощь. когда я использую это, после ввода 6-го игрока, похоже, закрывает программу, есть ли способ остановить это? –

+0

А, извините. Вам нужно увеличить массив, заменить 4 внутри [] на 5 - я отредактирую свой пост. Вы хотите добавить «бесконечное» количество игроков? Если это так, используйте вместо этого арраиста, как упоминал Бенджамин. – Squiddie

+0

Ах да. Спасибо. Можно ли назначить элементы массива переменным? например, playernames [1] to 'Playertwo' –

 Смежные вопросы

  • Нет связанных вопросов^_^