我的程序提示用户输入项目的代码。不允许重复代码,因此当他输入代码时,for
循环将检查它是否存在。对于我的条件,for
循环应break
,因为我确实得到了输出"项目代码存在"但它仍然没有将项添加到数组中。我错过了什么?
tems[] items = new Items[200];
AddItem add = new AddItem();
Scanner s = new Scanner(System.in);
int z,x;
double c,v;
String n,m,b;
public void addItem(){
int r;
z = add.getCode();
x = add.getQuantity();
c = add.getCostPrice();
n = add.getDescription();
m = add.getDiscount();
v = add.getSellingPrice();
b = add.getStatus();
for(r = 0; r < items.length; r++){
for(int q=0; q<r; q++){
if(z==items[q].getCode()){
System.out.println("Item's code exists");
break;
}
}
if(items[r]==null){
items[r] = new Items(z, n, x, c, v, b, m);
break;
}else if (items[r]!=null){
continue;
}
}
}
答案 0 :(得分:5)
如果您想要break
外部循环,请使用labeled break。像,
out: for(r = 0; r < items.length; r++){
for(int q=0; q<r; q++){
if(z==items[q].getCode()){
System.out.println("Item's code exists");
break out;
}
}
答案 1 :(得分:0)
您的代码有点难以理解。尝试改进变量名称并创建注释,以便其他人更好地理解代码。我相信问题在于你的循环。 break语句突破了第一个for循环,但它不会突破两者。如果我理解你的代码,那么最好放置一个标志来正确地打破这两个循环。
答案 2 :(得分:0)
使用break的替代方法是使用布尔变量:
boolean codeExists = false;
for(r = 0; r < items.length && !codeExists; r++){
for(int q=0; q<r && !codeExists; q++){
if(z==items[q].getCode()) {
System.out.println("Item's code exists");
codeExists = true;
}
}
}
codeExists
变为真后,两个循环都会退出。