2012-02-08 4 views
0

Я предлагаю пользователю ввести целое число и если они не вводят правильное целое число (в качестве ссылки на параметр), я бы хотел, чтобы подсказка отображалась снова, пока они делать.Проблемы с циклами while, Java

До сих пор это код у меня есть:

  int logIn = 0; 
    do { 
     logIn = Integer.parseInt(JOptionPane.showInputDialog(null, 
       "Please:" 
       + "\n(Enter number value of option you would like to choose.)\n" 
       + "\n1. Log In \n2. Register")); 
    } while (1 > logIn || logIn < 2); 

    int custIndex; 

    if (logIn == 1) { 
     custIndex = recommend.getCustomerIndex(); 
    } else { 
     customers.printCustomers(); 
     custIndex = customers.readCustomers().size(); 
    } 

    int options = 0; 
    do { 
     options = Integer.parseInt(JOptionPane.showInputDialog(null, 
       "Would you like to:" 
       + "\n(Enter number value of option you would like to choose.)\n" 
       + "\n1. See your recommendations. \n2. See top rated books." 
       + "\n3. See random books of the day. \n4. Exit.")); 
    } while (1 > options || options < 4); 

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

Любая помощь будет оценена по достоинству.

+1

попробовать в то время как ((Войти <1) || (Войти> 2)) –

ответ

3

Ваш while состояние читает

while (1 > logIn || logIn < 2) 

, что означает, что вход должен быть меньше 1 или меньше 2 для продолжения цикла. Что вы хотите

while (logIn < 1 || logIn > 2) 

или, возможно, более разборчиво

while (logIn != 1 && logIn != 2) 
+0

Спасибо, у меня было 'while (logIn! = 1 && logIn! = 2)' раньше, хотя я просто хотел понять, как это сделать с '<' and '>', если было более двух вариантов (например, во второй части мой код). – Marcos

3

выглядит так, как будто ваша логика цикла выключена. Цикл while будет продолжаться, пока logIn будет меньше 1, или логин МЕНЬШЕ 2 (должен быть больше).

вероятно Вы имели в виду:

сделать ... в то время как (1 < Войти || Войти> 2);

+0

+1 за то, что правильно! В конце концов! – Borodin

1

Заменить

while (1 != logIn && logIn != 2); 

Таким образом, цикл будет продолжаться, если имеет различное Войти значение от 1 и 2.

0
do { 
    logIn = Integer.parseInt(JOptionPane.showInputDialog(null, 
      "Please:" 
      + "\n(Enter number value of option you would like to choose.)\n" 
      + "\n1. Log In \n2. Register")); 
} while (logIn != 1 && logIn != 2) 

Update Войти в свой код, как описано выше :)

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