需要重新提示一条语句,但我的代码继续到下一条语句,

Need to reprompt a statement, but my code continues to the next statement,

在 while 语句中,当你输入错误的方向后,我得到一个错误,然后继续下一个问题。我如何格式化它以重新提示有效方向?不知道我是否应该使用 do while 对我来说这似乎是正确的方法,但它似乎不起作用

import javax.swing.JOptionPane;
public class taxiService {

public static void main(String [] args) {

//Declare constants
double fareCharge = 5;
double totalMiles = 0;
double finalFareCharged = 0;
double finalxCoord = 0;
double finalyCoord = 0;
double numOfMiles = 0;
double finalCoord = 0;
String error = "Invalid data, please enter valid data!";

String directions = "";
boolean reprompt = true;
//Prompt for direction and miles

while (reprompt) {
   totalMiles = numOfMiles + numOfMiles;
   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) {
   JOptionPane.showMessageDialog(null, "miles: " + totalMiles);
   }
   else 
   JOptionPane.showMessageDialog(null, error);


   }
}
}

将第二个问题移到循环之外。我认为这是您最初的想法,但将第二个问题放入循环中出现了逻辑错误。

import javax.swing.JOptionPane;
public class taxiService {

public static void main(String [] args) {

//Declare constants
double fareCharge = 5;
double totalMiles = 0;
double finalFareCharged = 0;
double finalxCoord = 0;
double finalyCoord = 0;
double numOfMiles = 0;
double finalCoord = 0;
String error = "Invalid data, please enter valid data!";

String directions = "";
boolean reprompt = true;
//Prompt for direction and miles

while (reprompt) {
   totalMiles = numOfMiles + numOfMiles;
   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) {
   JOptionPane.showMessageDialog(null, "miles: " + totalMiles);
   }else {
   JOptionPane.showMessageDialog(null, error);


   }
}
}

显示错误后添加continue; JOptionPane。这将强制它跳回到循环的开始并再次提示。