Java делать, пока l oop не останавливается, когда условие ложно - PullRequest
0 голосов
/ 08 апреля 2020

l oop все еще продолжается, даже если логическое значение в то время как false. Я не уверен, что не так. Предполагается, что булева переменная l oop имеет значение false, если они не кэшируют ответ, освобождая вас от l oop, но по какой-то причине программа этого не делает.

    public static double getvalue(String unit) {
        double answer = 0;
        boolean loop = true;
        do {
            try {
                System.out.println("enter the " + unit);
                answer = sc.nextDouble();
                loop = false;
            } catch (Exception e) {
                System.out.println("has to be a double");
                sc.nextLine();
            }
        } while (loop);
        return answer;
    }

* Редактировать: после просмотра моего кода в 11-й раз и после его завершения выясняется, что проблема была в другом l oop наверху, который я не решил правильно, заставляя его продолжать вызывать этот l oop снова и снова. Я исправил это, и теперь это работает. Большое вам спасибо и извините за это

Ответы [ 2 ]

3 голосов
/ 08 апреля 2020

Это то, что я бы сделал -

public static double getValue(String unit) {
    Scanner keys = new Scanner(System.in);
    double answer = 0;

    System.out.println("Enter a double: ");
    while (true) {
        try {
            answer = keys.nextDouble();
            return answer;
        } catch (Exception exc) {
            System.out.println("number has to be a double!");
            keys.nextLine();
        }
    }
  }
0 голосов
/ 08 апреля 2020

Попробуйте так:

public static double getvalue(String unit) {
double answer = 0;
boolean loop = true;
do {  
try {
         System.out.println("enter the " + unit);
         answer = (double) sc.nextDouble();
         break;
    } catch (Exception e) {
        System.out.println("has to be a double");
        sc.nextLine(); 
        }
   } while (true);
   return answer;
}
...