while循环不会循环到正确的位置

时间:2015-03-02 03:17:51

标签: java while-loop

这就是我遇到的问题: 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)

1 个答案:

答案 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"因为退出条件并不是特别好,但如果这是你留下的设计决定,那么上面的伪代码将满足这种需要。