根据ArrayList验证用户输入

时间:2012-02-12 23:03:30

标签: java arraylist

我的代码的以下部分存在问题。 当输入“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 个答案:

答案 0 :(得分:1)

您希望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()。