Как запустить только 2 раза цикл do-while? - PullRequest
1 голос
/ 10 ноября 2011

Как изменить приведенный ниже код, чтобы стать пользователем, может только 2 раза ввести неправильный PIN-код? После неправильного ввода PIN-кода 2 раза программа автоматически выйдет из системы.

    String user = "Melissa";
    int pin = 123456;
    int pin2;

    // Prompt the user for input
    do
    {
        String pin2String = JOptionPane.showInputDialog("Enter PIN");
        pin2 = Integer.parseInt(pin2String);
    }while(pin2 != pin);

    // Display
    JOptionPane.showMessageDialog(null, "User: "+ user);

Ответы [ 4 ]

4 голосов
/ 10 ноября 2011

Вам просто нужно добавить счетчик, чтобы подсчитать, сколько раз пользователь пытался ввести пин-код, а затем проверить условие в состоянии while цикла.

Например:

 String user = "Melissa";
 int pin = 123456;
 int pin2;
 int MAX_INCORRECT_PIN_THRESHOLD = 2;
 int attempts = 0;

 // Prompt the user for input
 do {
     String pin2String = JOptionPane.showInputDialog("Enter PIN");
     pin2 = Integer.parseInt(pin2String);
     attempts++;
 } while(pin2 != pin && attempts < MAX_INCORRECT_PIN_THRESHOLD);

 if (pin2 == pin) {
     // Display
     JOptionPane.showMessageDialog(null, "User: "+ user);
 }
0 голосов
/ 10 ноября 2011

Добавьте простой счетчик, который завершает цикл после двух итераций, а затем проверьте, был ли PIN-код недействительным после выхода из цикла:

String user = "Melissa";
int pin = 123456;
int pin2;
int count = 0;

// Prompt the user for input
do
{
    String pin2String = JOptionPane.showInputDialog("Enter PIN");
    pin2 = Integer.parseInt(pin2String);
}while(pin2 != pin && count++ < 2);

if(pin2 != pin)
{
  // Kansas is going bye-bye - call exit logic
}

// Display
JOptionPane.showMessageDialog(null, "User: "+ user);
0 голосов
/ 10 ноября 2011

Попробуйте цикл for, где он повторяется только дважды.Это, вероятно, будет проще.

VALID:
for(int i= 0; i < 2; i++){
  if(pin==pin2){
    //Valid login...
    break VALID;
  }else if(i == 1){
   System.exit(0);
  }
}
0 голосов
/ 10 ноября 2011
int counter = 0;
 do
    { if(counter++ >= 2){ break;}
        String pin2String = JOptionPane.showInputDialog("Enter PIN");
        pin2 = Integer.parseInt(pin2String);
    }while(pin2 != pin);
...