这就是我遇到的问题: while循环不会循环回到我想要的位置,它应该在用户完成第一个条目后提示车辆类型,而是转到里程数。
String vehicleType = JOptionPane.showInputDialog(
"Enter the type of vehicle or Q to quit ");
while (!vehicleType.equalsIgnoreCase ("Q")) {
if (!(vehicleType.equalsIgnoreCase ("car")
|| vehicleType.equalsIgnoreCase ("truck")
|| vehicleType.equalsIgnoreCase ("suv")
|| vehicleType.equalsIgnoreCase ("motorcycle")))
{
validData = false;
vehicleType = JOptionPane.showInputDialog(
"Please enter a valid vehicle type from the assigned list ");
}
else {
validData = true;
do {
try {
milesTraveled = Double.parseDouble (JOptionPane.showInputDialog
(null, "Enter number of miles to be traveled ")); }
catch (NumberFormatException e)
答案 0 :(得分:1)
//Keep requesting Vehicle details from user
while(user wants to keep going)
{
boolean userQuit = false
//Continue requesting Vehcile type until valid OR until user wants to quit
while(user has not entered Q or valid car type)
{
answer = prompt user to enter type with your Dialog
if(answer entered is "q")
{
userQuit = true
break;
}
else if(answer IS one of the vehicle types)
{
Assign answer to vehicle type
break;
}
}
if(userQuit)
break;
//The rest of your code. Make sure to set userQuit back to false
}
好的,所以我们这里有基本的伪代码,你应该改变你的事件顺序。在我检查它是否有效之前,看看我是如何要求用户输入的。这意味着第二次,它会再次询问。
如果他们没有输入有效数据,您需要决定要做什么。我可能会在Dialog提示符和if语句周围编写一个while循环来确定输入是否有效,如果没有,只需再次询问。
在阅读了Yitzih的评论之后,值得注意的是,在确认车辆类型有效后,您需要申请车型。我已经使用另一个while循环编辑了代码,以便更容易看到必要的内容。
我也同意使用" Q"因为退出条件并不是特别好,但如果这是你留下的设计决定,那么上面的伪代码将满足这种需要。