2016-04-14 2 views
0

Я делаю средний класс сценария для своего класса, и я не могу понять, как заставить мою контрольную секцию повторять, пока у меня не будет действительного значения (код указан ниже). При запуске он позволяет мне сделать коррекцию, если исходный вход недействителен, но делает это только один раз. Как я могу зациклиться, пока не получу правильный ответ? Заранее спасибо!Создание инструкции перепроверки if

if (grade1 >= 0 && grade1 <= 100) 
    System.out.println("First grade valid.\n"); 
    else 
    { 
     System.out.println("Grade invalid. Re-enter first grade:"); 
     grade1 = kb.nextDouble(); 
    } 

ответ

1

считают

grade = -1; 
System.out.println("Enter a grade:\n"); 
grade1 = kb.nextDouble(); 
if (grade1 >= 0 && grade1 <= 100) 
{ 
    System.out.println("First grade valid.\n"); 
} 
else 
{ 
    while (grade1 < 0 || grade1 > 100) 
    { 
     System.out.println("Grade invalid. Re-enter first grade:"); 
     grade1 = kb.nextDouble(); 
    } 
} 
+0

Просто попытался это изменить, и это сводит на нет возможность повторного ввода. – Dayeo78

+0

У вас должен быть код повторного входа внутри цикла. Пожалуйста, опубликуйте цикл, показывающий, как вы реорганизовали его с предложением FredK. Просто публикация «он не работает» не предоставляет достаточной информации для тех, кто поможет вам. –

+0

Отлично, вот что я искал! Спасибо за помощь! – Dayeo78

0

Попробуйте это:

while ((grade = Integer.parseInt(JOptionPane.showInputDialog("Enter a grade"))) < 0 || grade > 100) { 
    System.out.println("Invalid grade of: " + grade); 
} 

Оно не обрабатывать письма красиво, хотя, если вы введете "а" Итл жаловаться и кричать на вас

0

Чара, как первоначально выполненный метод, я настраиваю его так, чтобы пользователь подключался к своим входам и перекрестно проверял правильность после того, как они были (см. первый отрывок ниже). Понятно, что лучше было бы сохранить пространство, если бы я мог просто перекрестно проверить начальный вход (см. Второй выдержку ниже). Лью Блох, я понимаю, к чему вы клоните, и это было небольшим недосмотром с моей стороны. С тех пор я буду лучше в своих ответах.

// перепроверить запись

if (grade1 >= 0 && grade1 <= 100) 
    System.out.println("First grade valid.\n"); 
    else 
    { 
     System.out.println("Grade invalid. Re-enter first grade:"); 
     grade1 = kb.nextDouble(); 
    } 

// Grade

grade1 = kb.nextDouble(); 
    while (grade1 < 0 || grade1 > 100) 
    { 
    System.out.println("Entered grade is invalid. Re-enter grade:"); 
    grade1 = kb.nextDouble(); 
    } 
0
try (Scanner scanner = new Scanner(System.in)) { 
    System.out.println("Enter a grade:\n"); 
    double grade1 = scanner.nextDouble(); 
    if (grade1 >= 0 && grade1 <= 100) 
    { 
     System.out.println("First grade valid.\n"); 
    } 
    else 
    { 
     while (grade1 < 0 || grade1 > 100) 
     { 
      System.out.println("Grade invalid. Re-enter first grade:"); 
      grade1 = scanner.nextDouble(); 
     } 
    } 
} 
Смежные вопросы