Как спросить пользователя, хочет ли он запустить программу заново, если он набрал символ / строку вместо числа?

1

Я новичок здесь и новичок в Java, начался как 1-2 недели назад, и я хотел создать приложение, использующее теорию пифагоры. Все сделано, но теперь я застрял в месте, где я хочу, чтобы пользователь спросил, хочет ли он повторить попытку, начните снова, если он вводит символ или строку вместо числа.

Что я делаю не так? Это мой код, я добавил комментарии, чтобы было легче, если вы не понимаете, чего я пытаюсь достичь.

Заранее спасибо!

package pitagoracalculator;
import java.util.Scanner;

public class PitagoraCalculator {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
            double nr1;
            double nr2;
            double ipot;
            boolean raspuns;
            String raspuns1;

            do{
                try{
                    //user is asked for first number
                    System.out.print("Introduceti primul numar: ");
                    nr1 = input.nextDouble();

                    //user is asked for second number
                    System.out.print("Introduceti al 2-lea numar: ");
                    nr2 = input.nextDouble();

                    //result of calculation
                    ipot = (nr1*nr1)+(nr2*nr2);
                    System.out.println("Rezultatul este: "+ipot+"^2");

                //in case user inserts a string/char instead of a double => error
                } catch (Exception e){
                    System.err.println("Nu ati introdus un numar.");
                    break;
                }

                //user is asked if he wants to do another calculation
                System.out.println("Doriti sa faceti un alt calcul? (da/nu)");
                raspuns1 = input.next();

                //if his answer is yes, raspuns = true, else raspuns = false
                if(raspuns1.equalsIgnoreCase("da"))
                    raspuns = true;
                else{
                    System.out.println("La revedere!");
                    raspuns = false;
                }

            //checks if the answer was true or false
            }while(raspuns == true);
    }
}
  • 1
    Вы хотите отослать пользователя обратно в начало в вашем блоке catch , или я неправильно понял?
  • 0
    Да. Допустим, он запускает программу и вводит «g» вместо числа, так как сейчас он выполнит: System.err.println и завершит программу. Я хочу отскочить назад и спросить у него номер, или, может быть, спросить его, хочет ли он попробовать еще раз, и если его ответ «да», спросить у него номер. Мне любопытно, как я могу достичь их обоих.
Теги:
string
netbeans
double

2 ответа

1
Лучший ответ

замещать

//in case user inserts a string/char instead of a double => error
} catch (Exception e){
   System.err.println("Nu ati introdus un numar.");
   break;
}

с

//in case user inserts a string/char instead of a double => error
} catch (Exception e){
   System.err.println("Nu ati introdus un numar.");
   //clear pending input.
   if (input.hasNext()) {
        input.next();
   }
   continue;
}

"break" выходит из цикла, "continue" продолжит следующий цикл цикла.

Вы также должны инициализировать переменную raspuns с помощью true

boolean raspuns = true;
  • 0
    Он говорит мне: «переменные raspuns, возможно, не были инициализированы». и не может быть построен. У меня есть 2 переменные, «raspuns1» содержит ответ в виде строки (да / нет), а затем этот ответ преобразуется в логическое «raspuns» как истина или ложь. Ошибка в: while (raspuns == true); последняя строка кода.
  • 0
    Я обновил свой ответ.
Показать ещё 2 комментария
0

Вы можете вызвать метод в исключительном случае. Для этого вы должны сделать метод в том же классе и поместить все ваши вещи в этот метод, используя if-else loop..

  • 0
    Сначала я так и сделал. Создал метод, но не смог заставить его работать. Мои знания в программировании пока весьма ограничены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню