Как пропустить приглашение и перейти к следующему, не нарушая и не выходя из всего цикла? Ява
Поэтому я работаю над программой, позволяющей пользователю добавлять учеников в класс, а также управлять их оценками и тем, что нет. Когда пользователь выбирает первый вариант в меню, он должен ввести идентификатор (обязательно), но он может добавить числовой балл и/или буквенный балл. На основе обратной связи в другом посте мне удалось создать строку переменной строки, которая считывает пользовательский ввод, затем проверяет, является ли это "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".