Java for循环没有';I don’我不能按它应该的那样工作

Java for循环没有';I don’我不能按它应该的那样工作,java,Java,程序将要求用户输入项目代码,然后程序将项目状态更改为不可用。代码工作正常,并更改了状态,但找不到else中仍在运行和打印项目的代码 这是密码 public void stopSellingItem(){ boolean invalidInput; int q = -1; String u = "Unvailable"; do { try { invalidInput = false;

程序将要求用户输入项目代码,然后程序将项目状态更改为不可用。代码工作正常,并更改了状态,但找不到else中仍在运行和打印项目的代码

这是密码

public void stopSellingItem(){
    boolean invalidInput;
    int q = -1;
    String u = "Unvailable";
    do {        
        try {        
            invalidInput = false;
    System.out.println("Enter the item's code you want to stop selling it : ");
        q = s.nextInt();
        out: for (int i = 0; i<items.length; i++){
            if(q == items[i].getCode()){
                items[i] = new Items(items[i].getCode(), items[i].getDescription(), items[i].getQuantity(),
                        items[i].getcostPrice(), items[i].getsellingPrice(),
                        u, items[i].getDiscount());
                break out;
            }else if(q != items[i].getCode()){
                System.out.println("The Item is not found");
            }
        }

        } catch (InputMismatchException e) {
    System.out.println("Please enter a valid code [Numbers Only]");
            s.next();
    invalidInput = true;  // This is what will get the program to loop back
        }
} while (invalidInput);
}
public void stopSellingItem(){
布尔输入;
int q=-1;
字符串u=“不可用”;
做{
试试{
无效输入=假;
System.out.println(“输入要停止销售的商品代码:”);
q=s.nextInt();

out:for(int i=0;i的
中断
正在工作,但您正在打印
由于第一个项目而不是最后一个项目,因此找不到该项目。添加布尔值以捕捉该情况。然后您还可以忽略中断

    // add a boolean
    boolean itemFound = false;
    for (int i = 0; i<items.length; i++){
        if(q == items[i].getCode()){
            items[i] = new Items(items[i].getCode(), items[i].getDescription(), items[i].getQuantity(),
                    items[i].getcostPrice(), items[i].getsellingPrice(),
                    u, items[i].getDiscount());
            itemFound = true;
        }
    }

    if (!itemFound){
        System.out.println("The Item is not found");
    }
//添加一个布尔值
布尔itemFound=false;

因为(inti=0;i最终在“荒诞思维”的帮助下解决了这个问题

这是解决它后的代码

public void stopSellingItem(){
    boolean invalidInput;
    int q = -1;
    String u = "Unvailable";
    boolean y = false;
    do {        
        try {        
            invalidInput = false;
    System.out.println("Enter the item's code you want to stop selling it : ");
        q = s.nextInt();
        out: for (int i = 0; i<items.length; i++){

            if(items[i].getCode()==q){
                items[i].setStatus(u);
                y = false;
                break out;
            }
            if(!y)
                System.out.println("The item is not found");
            break out;
        }

        } catch (InputMismatchException e) {
    System.out.println("Please enter a valid code [Numbers Only]");
            s.next();
    invalidInput = true;  // This is what will get the program to loop back
        }
} while (invalidInput);
}
public void stopSellingItem(){
布尔输入;
int q=-1;
字符串u=“不可用”;
布尔y=false;
做{
试试{
无效输入=假;
System.out.println(“输入要停止销售的商品代码:”);
q=s.nextInt();

out:for(int i=0;iAh出于对理智的热爱,不要使用标签…简单地
中断当前循环并完成它…+1,因为这与标签无关。else语句只是在程序逻辑中放错了位置。@mazin将
if(y)
移出
for
循环一些建议:1)移除
out
标签,只需使用
break;
2)移动
if(!y)
,使其位于
for
循环之后3)此代码仅在停止销售阵列中的第一项时有效(因为第二项
break;
位于
for
循环中,而不是
if
)4)您从未将
y
设置为
true
public void stopSellingItem(){
    boolean invalidInput;
    int q = -1;
    String u = "Unvailable";
    boolean y = false;
    do {        
        try {        
            invalidInput = false;
    System.out.println("Enter the item's code you want to stop selling it : ");
        q = s.nextInt();
        out: for (int i = 0; i<items.length; i++){

            if(items[i].getCode()==q){
                items[i].setStatus(u);
                y = false;
                break out;
            }
            if(!y)
                System.out.println("The item is not found");
            break out;
        }

        } catch (InputMismatchException e) {
    System.out.println("Please enter a valid code [Numbers Only]");
            s.next();
    invalidInput = true;  // This is what will get the program to loop back
        }
} while (invalidInput);
}