当用户输入错误时循环,当输入正确时递增
loops when user input is wrong and increments when input is right
我的部分作业是创建一个程序,要求用户输入 1-1000 范围内的商品价格。如果用户输入的价格不在该范围内,则程序将循环返回以询问同一商品编号的价格(商品编号范围为 1-10)。如果输入价格在范围内,则程序会增加项目编号。并要求用户输入该商品的价格。我就是这样做的。但是只有第 1 项行为正确。请advise.Thanks
boolean priceinrange = false;
do {
System.out.println("Please enter the price of item " + x + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item:"+ (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item"+ (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item" + x + ":");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item " + (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item" + x + ":");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1)+":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item" + x + ":");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1)+ ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1)+ ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1) +":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" +(x+=1)+ ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
您需要在每个 do { } while()
之前将 priceinrange
设置回 false。否则它仍然是 true
(来自 "before"),即使您输入的价格无效。
另一种方法是始终设置它:priceinrange = (price > 1 && price < 1000)
而不是仅在满足条件时将 priceinrange
设置为 true
。
您需要删除所有复制和粘贴代码。额外的代码只会让这更难。
真正的诀窍是在输入错误和输入正确时循环。只有当您读入 10 个有效价格时,您才会停止循环。你不在乎它最终循环了多少次。你关心你有你的 10 个价格。
如果你这样想,那么只需要一个循环。 do while (x <= 10)
和 if (price > 1 && price < 1000) { x += 1;}
会给你一个美好的世界。
您应该能够用不到 25 行代码解决这个问题。我根本没有使用 priceinrange
布尔值就解决了它。
如果这还不够,请告诉我。
我的部分作业是创建一个程序,要求用户输入 1-1000 范围内的商品价格。如果用户输入的价格不在该范围内,则程序将循环返回以询问同一商品编号的价格(商品编号范围为 1-10)。如果输入价格在范围内,则程序会增加项目编号。并要求用户输入该商品的价格。我就是这样做的。但是只有第 1 项行为正确。请advise.Thanks
boolean priceinrange = false;
do {
System.out.println("Please enter the price of item " + x + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item:"+ (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item"+ (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item" + x + ":");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item " + (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item" + x + ":");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1)+":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item" + x + ":");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1)+ ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1) + ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1)+ ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" + (x+=1) +":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
do {
System.out.println("Please enter the price of item" +(x+=1)+ ":");
price = kb.nextDouble();
if (price>1 && price<1000)
priceinrange= true;
else
System.out.println ("Please enter the price of item :");
}
while (!priceinrange);
您需要在每个 do { } while()
之前将 priceinrange
设置回 false。否则它仍然是 true
(来自 "before"),即使您输入的价格无效。
另一种方法是始终设置它:priceinrange = (price > 1 && price < 1000)
而不是仅在满足条件时将 priceinrange
设置为 true
。
您需要删除所有复制和粘贴代码。额外的代码只会让这更难。
真正的诀窍是在输入错误和输入正确时循环。只有当您读入 10 个有效价格时,您才会停止循环。你不在乎它最终循环了多少次。你关心你有你的 10 个价格。
如果你这样想,那么只需要一个循环。 do while (x <= 10)
和 if (price > 1 && price < 1000) { x += 1;}
会给你一个美好的世界。
您应该能够用不到 25 行代码解决这个问题。我根本没有使用 priceinrange
布尔值就解决了它。
如果这还不够,请告诉我。