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