循环两个输入,直到用户完成输入

Looping two inputs until the user has finished entering

我正在尝试循环这两个问题 ("please enter direction") 和 ("Please enter distance in miles")。如果输入的值不正确,它将重新提示用户输入正确的值。所以这两个问题会循环,直到用户完成输入并达到 "Destination"。如果用户不输入 north east south 或 west,我会循环第一个问题,但第二个问题我只能让它自己循环。

boolean reprompt = true;
//Prompt for direction and miles

while (reprompt) {

   directions = JOptionPane.showInputDialog(null, "Please enter a direction: ");
   if (directions.equalsIgnoreCase("East")) {
      finalxCoord = finalxCoord + numOfMiles;
      reprompt = false;
      }
      else if (directions.equalsIgnoreCase("West")) {
               finalxCoord = finalxCoord - numOfMiles;
               reprompt = false;
               }
             else if (directions.equalsIgnoreCase("North")) {
                     finalyCoord = finalyCoord + numOfMiles;
                     reprompt = false;
                     }
                     else if (directions.equalsIgnoreCase("South")) {
                             finalyCoord = finalyCoord - numOfMiles;
                             reprompt = false;
                             }
             else {
                 reprompt = true;
                 JOptionPane.showMessageDialog(null, error);
             }    
        }

   numOfMiles = Double.parseDouble(JOptionPane.showInputDialog(null, "Please enter distance in miles: "));
   if (numOfMiles > 0) {
   totalMiles += numOfMiles;
   JOptionPane.showMessageDialog(null, "miles: " + totalMiles);


   }
   else 
   JOptionPane.showMessageDialog(null, error);

就像你对第一个问题所做的那样,用另一个布尔值在 while 循环中制作第二个问题。 代码:

boolean restart = true;
//Prompt for direction and miles
while(restart){    

boolean reprompt = true;
boolean reprompt_SecondQuestion=true;

while (reprompt) {

   directions = JOptionPane.showInputDialog(null, "Please enter a direction: ");
   if (directions.equalsIgnoreCase("East")) {
      finalxCoord = finalxCoord + numOfMiles;
      reprompt = false;
      }
      else if (directions.equalsIgnoreCase("West")) {
               finalxCoord = finalxCoord - numOfMiles;
               reprompt = false;
               }
             else if (directions.equalsIgnoreCase("North")) {
                     finalyCoord = finalyCoord + numOfMiles;
                     reprompt = false;
                     }
                     else if (directions.equalsIgnoreCase("South")) {
                             finalyCoord = finalyCoord - numOfMiles;
                             reprompt = false;
                             }
             else {
                 reprompt = true;
                 JOptionPane.showMessageDialog(null, error);
             }    
        }
   while(reprompt_SecondQuestion)
   {
        numOfMiles = Double.parseDouble(JOptionPane.showInputDialog(null, "Please enter distance in miles: "));
        if (numOfMiles > 0) {
        totalMiles += numOfMiles;
        JOptionPane.showMessageDialog(null, "miles: " + totalMiles);
        reprompt_SecondQuestion = false;
   }
   else 
   {

   JOptionPane.showMessageDialog(null, error);
   }
  }

    //Prompt user to type "done"
    //Capture user input
    if(user_input.equals("Done"))
    {
       //Display direction and miles to user
       restart = false;
    }
    else
    {
    }
  }