Проверить ввод пользователя по ArrayList - PullRequest
0 голосов
/ 13 февраля 2012

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

    System.out.println("ENTER CODE (nn to Stop) : ");
    ArrayList<Product> list = new ArrayList<Product>();
    .
    .
    .
    .


    ArrayList<Code> codeList = new ArrayList<Code>();


    for (Product product : list) {
        System.out.print("CODE : ");
        String pcode = scan.next();
        if (pcode.equalsIgnoreCase("nn")) {
            break;
        }

        if (!(code.equalsIgnoreCase(product.getCode()))) {
            System.out.println("Invalid code, please enter valid code.");
            System.out.print("CODE : ");
            pcode = scan.next();

        }

        System.out.print("QUANTITY : ");
        int quan = scan.nextInt();
        while (quan > 20) {
            System.out.println("Purchase of more than 20 items are not allowed, please enter lower amount.");
            System.out.print("QUANTITY : ");
            quan = scan.nextInt();
        }
        codeList.add(new Code(pcode, quan));
    }

1 Ответ

1 голос
/ 13 февраля 2012

Вы хотите 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 ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...