Java Если инструкция терпит неудачу, вернитесь назад и попробуйте снова - PullRequest
0 голосов
/ 09 мая 2018
Scanner scannerObject= new Scanner(System.in) ;
    System.out.println("Enter what maths to use:");
    System.out.println("Enter 1 for addition");
    System.out.println("Enter 2 for Subtraction");
    System.out.println("Enter 3 for multiplication");
    System.out.println("Enter 4 for Division");
    n1=scannerObject.nextInt();

    if(n1>4) {
        System.out.println("That is not an option. Please try again");

я хочу получить, если n1> 4, он спросит снова

Ответы [ 5 ]

0 голосов
/ 09 мая 2018

вы можете попробовать разбить ваши коды на логические методы.
что делает ваш код более читабельным.

boolean isValidInput;
int input =-1;
Scanner scanner = new Scanner(System.in);
do{
    printMenu();
    input = getInt(scanner); //this will check that the input is an int

    if(input >0 && input<=4) { isValidInput = true;}
    else { System.out.println("selection invalid. Try again.");

}while (!isValidInput); //keeps looping until a valid input is entered.

switch(input){
   case 1: ... your code logic here...

}

ниже будет, как вы пишете свои служебные методы

static void printMenu(){
    System.out.println("Enter what maths to use:");
    System.out.println("Enter 1 for addition");
    System.out.println("Enter 2 for Subtraction");
    System.out.println("Enter 3 for multiplication");
    System.out.println("Enter 4 for Division");
}

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

static int getInt(Scanner scanner){
    int result =0;
    while(true){ //loop forever
    try{
       result=scanner.nextInt();
       return result; //it will return if there's no error
    }catch (Exception e){
       scanner.nextLine(); //clear the scanner
       System.out.println("not an integer! try again: ");
    }
    }
}
0 голосов
/ 09 мая 2018

Таким образом, у вас должен быть способ вернуться к списку вопросов после оператора if. Лучше всего поставить все ваши вопросы в один цикл.

Scanner scannerObject= new Scanner(System.in) ;
boolean answered = false;
while(!answered)
{
    System.out.println("Enter what maths to use:");
    System.out.println("Enter 1 for addition");
    System.out.println("Enter 2 for Subtraction");
    System.out.println("Enter 3 for multiplication");
    System.out.println("Enter 4 for Division");
    n1=scannerObject.nextInt();

    if(n1>4) 
    {
        System.out.println("That is not an option. Please try again");
    }
    else 
    {
        answered = true;
    }
}

Надеюсь, это поможет

0 голосов
/ 09 мая 2018

Итак, вам, вероятно, нужен такой же цикл - возможно, начните с Заявления потока управления

Может быть, что-то вроде ...

int n1 = -1;
do {
    Scanner scannerObject = new Scanner(System.in);
    System.out.println("Enter what maths to use:");
    System.out.println("Enter 1 for addition");
    System.out.println("Enter 2 for Subtraction");
    System.out.println("Enter 3 for multiplication");
    System.out.println("Enter 4 for Division");
    n1 = scannerObject.nextInt();

    if (n1 > 4) {
        System.out.println("That is not an option. Please try again");
    }
} while (n1 < 1 && n1 > 4);
0 голосов
/ 09 мая 2018

Вы можете использовать простое логическое условие.

boolean conditionNotMet = true;
while(conditionNotMet){
Scanner scannerObject= new Scanner(System.in) ;
    System.out.println("Enter what maths to use:");
    System.out.println("Enter 1 for addition");
    System.out.println("Enter 2 for Subtraction");
    System.out.println("Enter 3 for multiplication");
    System.out.println("Enter 4 for Division");
    n1=scannerObject.nextInt();

    conditionNotMet = false;
    if(n1>4) {
        conditionNotMet = true;
        System.out.println("That is not an option. Please try again");
     }
}
//continue processing using valid n1...
0 голосов
/ 09 мая 2018

Просто оберните внутри цикла, и используйте еще, чтобы разорвать

while(true){
Scanner scannerObject= new Scanner(System.in) ;
    System.out.println("Enter what maths to use:");
    System.out.println("Enter 1 for addition");
    System.out.println("Enter 2 for Subtraction");
    System.out.println("Enter 3 for multiplication");
    System.out.println("Enter 4 for Division");
    n1=scannerObject.nextInt();

    if(n1>4) {
        System.out.println("That is not an option. Please try again");
}
   else break; //this will make exit the loop
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...