在用户完成输入之前循环两个输入

时间:2015-10-08 02:35:46

标签: java jgrasp

我试图循环这两个问题("请输入方向")和("请输入以英里为单位的距离")。如果输入的值不正确,则会重新提示用户输入正确的值。因此,这两个问题将循环,直到用户完成输入和#34;目的地"到达了。如果用户没有输入东北向南或向西,我得到第一个循环问题,但第二个问题我只能让它自行循环。

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);

1 个答案:

答案 0 :(得分:1)

就像你对第一个问题所做的那样,用另一个布尔值在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
    {
    }
  }
相关问题