Цикл while не работает в калькуляторе

350
05 ноября 2017, 16:18

Добрый день, пытаюсь написать консольный калькулятор и не пойму почему не работает цикл. Вот код калькулятора, все работает. Но как только пытаюсь добавить цикл do-while он работает не так, как я думаю он должен работать.Ведь пока условие истинно, в моем варианте "!yes" не да, то цикл должен выполнится заново, а пока, происходит выход из программы, какую команду ты бы не задала. Даже абракадабра. Вот результат из консоли. Скажите, где я туплю?

    Введите первое число:
1
Введите второе число:
2
Сделайте действие: + - * /
+
Результат: 3.0Выйти из программы: no/yes
no

Process finished with exit code 0

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Calculator calc = new Calculator();
        String exit ="no";
        do {
            System.out.println("Введите первое число:");
            double firstnumber = scanner.nextDouble();
            System.out.println("Введите второе число:");
            double secondnumber = scanner.nextDouble();
            System.out.println("Сделайте действие: + - * /");
            String actionuser = scanner.next();
            calc.mathoperator(actionuser, firstnumber, secondnumber);
            System.out.println("Результат: " + calc.getResult()+"Выйти из программы: no/yes");
            exit=scanner.next();
        }while(exit.equals("!yes"));
    }// end method main
}// end class

И класс калькулятор,правда пока с одним действием.

public class Calculator {

    private double result;

        public void plus(double firstnumber, double secondnumber) {
            result = firstnumber + secondnumber;
        }// end method add

    public void mathoperator (String useraction,double firstnumber, double secondnumber ) {
        if (useraction.equals("+")) {
            plus(firstnumber, secondnumber);
        }
    }// end matoperator
    public double getResult(){

        return result;
    }// end method getResult
}// end class
Answer 1

пока while дает true цикл продолжается.

В вашем случае:

while(exit.equals("!yes"));

вы вводите no. "no".equals("!yes") вернет false т.к. no не равен true.

Думаю вы хотели использовать отрицание, тогда восклицательный знак надо ставить перед утверждением.

!exit.equals("yes")

это утверждение вернет true если введете "no"

READ ALSO
Android - Игра крестики нолики

Android - Игра крестики нолики

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

324
Добавление кнопки на окно

Добавление кнопки на окно

Создаю окно с некоторой надписью и реакцией на нажатие клавиш(отображение нажатых символов на окне)Помогите пожулуйста создать кнопку на этом...

276
Не работает setImageResource

Не работает setImageResource

Осваивая AndroidStudio, столкнулся с такой проблемойСледующий код должен рисовать на экране бутылку, и далее с помощью многократного вызова fly() , например...

257
e.printStackTrace() заменяет throw?

e.printStackTrace() заменяет throw?

Часто встречаю подобный код:

295