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