Java 需要重新编译一条语句,但我的代码将继续执行下一条语句,

Java 需要重新编译一条语句,但我的代码将继续执行下一条语句,,java,jgrasp,Java,Jgrasp,在while语句中,键入错误的方向后,我得到一个错误,但随后继续下一个问题。如何将其格式化为有效的方向?不知道我是否应该使用do while或not对我来说这似乎是正确的方法,但似乎不起作用 import javax.swing.JOptionPane; public class taxiService { public static void main(String [] args) { //Declare constants double fareCharge = 5; double t

在while语句中,键入错误的方向后,我得到一个错误,但随后继续下一个问题。如何将其格式化为有效的方向?不知道我是否应该使用do while或not对我来说这似乎是正确的方法,但似乎不起作用

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语句。但是,我建议您使用两个循环。