当条件为真时,我的循环不会结束

时间:2014-10-16 02:44:17

标签: java

我的程序提示用户输入项目的代码。不允许重复代码,因此当他输入代码时,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;
        }               
    }
}

3 个答案:

答案 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变为真后,两个循环都会退出。