Как пропустить приглашение и перейти к следующему, не нарушая и не выходя из всего цикла? Ява
Поэтому я работаю над программой, позволяющей пользователю добавлять учеников в класс, а также управлять их оценками и тем, что нет. Когда пользователь выбирает первый вариант в меню, он должен ввести идентификатор (обязательно), но он может добавить числовой балл и/или буквенный балл. На основе обратной связи в другом посте мне удалось создать строку переменной строки, которая считывает пользовательский ввод, затем проверяет, является ли это "S"/"s" (пропустить или нет) и разбирает значение в double соответственно. Теперь, опираясь на вопрос, как я могу пропустить приглашение и перейти к следующему приглашению, если пользователь решит пропустить добавление баллов? я пытался использовать break; но он выходит из всего цикла . Есть ли способ пропустить вопрос для оценки и перейти к вопросу для оценки букв?
Вывод:
1) Добавить учащихся в класс
2) удалить ученика из класса
3) установить оценки для студента
4) редактировать оценки для студента
5) Показать Отчет Класса
6) выход
1
Пожалуйста введите код: Пожалуйста, введите счет: (введите s, чтобы пропустить)
Любезно введите оценку: (введите s, чтобы пропустить)
Код
// Prompting the user for Score (Numerical Grade)
System.out.println("Kindly input Score: (Enter s to Skip)");
// reading the input into the line variable of string datatype
String line = input.nextLine();
// checking if line =="s" or =="S" to skip, otherwise
// the value is parsed into a double
if("s".equals(line) || "S".equals(line))
{
break; // this exists the loop. How can I just skip this requirement
//and go to the next prompt?
}else try
{
score = Double.parseDouble(line);
System.out.println(score);
} catch( NumberFormatException nfe)
{
}
// Prompting the user for Numerical Grade
System.out.println("Kindly input Grade: (Enter s to Skip)");
String line2 = input.nextLine();
if("s".equals(line2) || "S".equals(line2))
{
break; // this exists the loop. How can I just skip this
// requirement and go to the next prompt?
}else try
{
score = Double.parseDouble(line2);
System.out.println(score);
} catch( NumberFormatException nfe)
{
}
2 ответа:
Просто удалите
break
:if("s".equals(line) || "S".equals(line)) { // Don't need anything here. }else { try { score = Double.parseDouble(line); System.out.println(score); } catch( NumberFormatException nfe) { } }
Но лучше не иметь пустого
true
случая (или, скорее, он не нужен):if (!"s".equals(line) && !"S".equals(line)) { try { // ... } catch (NumberFormatException nfe) {} }
Вы также можете использовать
String.equalsIgnoreCase
, чтобы избежать необходимости тестировать"s"
и"S"
.