Вы хотите continue
вместо break
.
Кроме того, вы должны вызывать code = scan.next()
только один раз внутри цикла;в противном случае вы пропустите некоторые элементы.
String code = scan.next();
boolean match = false;
for (Product product : list) {
if (code.equalsIgnoreCase(product.getCode())) {
match = true;
break;
}
}
// now only if match is false do you have an invalid product code.
Обновление:
Я все еще не могу заставить это работать.То, что я пытаюсь сделать, это проверить ввод пользователя, чтобы убедиться, что код продукта существует, если не вывести сообщение о том, что введенный код продукта является недействительным, и запросить правильный код.Мне также нужно иметь условие, чтобы остановить ордер при вводе «nn».Я пробовал циклы while, циклы do-while и т. Д. Не могу понять, что это правильно.Пожалуйста помогите.Моя проблема с написанием кода для нескольких условий.Когда один работает правильно, другой нет.
while (true) {
final String code = scan.next();
if (isExitCode(code)) {
break;
}
if (!isValidCode(code)) {
System.out.println("Invalid code, please enter valid code.");
continue;
}
int quantity = -1;
while (true) {
quantity = scan.nextInt();
if (!isValidQuantity(quantity)) {
System.out.println("bad quantity");
continue;
}
break;
}
// if you've got here, you have a valid code and a valid
// quantity; deal with it as you see fit.
}
Теперь вам просто нужно написать методы isExitCode (), isValidCode () и isValidQuantity ().