2015-10-08 2 views
-1

Я пытаюсь зациклировать эти два вопроса («пожалуйста, введите направление») И («Введите расстояние в милях»). Если введено неверное значение, оно будет перепрограммировать пользователя для ввода правильного значения. Таким образом, эти два вопроса будут зацикливаться до тех пор, пока пользователь не выполнит ввод и не достигнет пункта назначения. Я получил первый вопрос, если пользователь не вводит северо-восток на юг или запад, но второй вопрос, который я мог бы сделать, только зациклился на нем.Зацикливание двух входов до тех пор, пока пользователь не закончит ввод

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

Просто сделайте второй вопрос внутри цикла 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 
    { 
    } 
    } 
+0

После ввода двух правильных значений программа спросит, является ли это конечным пунктом назначения. Если пользователь не будет снова спрашивать направление и расстояние в милях. – Javabegin

+0

Пожалуйста, также добавьте свой код для своей программы с просьбой о назначении. –

+0

назначение, основанное на подсказках и numOfMiles. Этим двум нужно петлю. – Javabegin

 Смежные вопросы

  • Нет связанных вопросов^_^