Простой калькулятор в Java - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать простой калькулятор в Java с пользовательским вводом для первого числа и второго числа, а затем с помощью цикла while вычислять как пользователь но когда я написал, например, a вместо суммы суммы два, он разорвал цикл !! почему?

package com.myproject.CalcEngine2;
import java.util.Scanner; // import the Scanner class

public class Main {

    public static void main(String[] args) {
        Scanner myObj = new Scanner(System.in);
        System.out.println("Enter fisr number");
        double val1 = myObj.nextDouble();
        System.out.println("Enter fisr number");
        double val2 = myObj.nextDouble();
        double result = 0.0d;
        String addition = "a";
        System.out.println("Enter what you want to do");
        String opCode = myObj.next();
        while(opCode.equals("E")) {
            if (opCode.equals(addition))
                result = val1 + val2;
            else if (opCode.equals("s"))
                result = val1 - val2;
            else if (opCode.equals("d"))
                result = val1 / val2;
            else if (opCode.equals("m"))
                result = val1 * val2;
            System.out.println(result);
            System.out.println("Enter what you want to do"+"E for exit , a for addition , s for subtraction , d for Division , m for multiplication ");
            opCode = myObj.next();
        }
    }
}

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

Ответы [ 5 ]

3 голосов
/ 14 марта 2019

Возможно, потому что цикл while прекратится, за исключением "E"?

while(opCode.equals("E")) {

работает только тогда, когда "E", но я думаю, что вы имеете в виду

while(!opCode.equals("E")) {
0 голосов
/ 14 марта 2019

спасибо всем И вот вам окончательный код для того, кто будет искать в будущем с учетом чувствительности к регистру!

package com.myprogram.CalcEngine;
import java.util.Scanner; // import the Scanner class

public class Main {

    public static void main(String[] args) {
        Scanner myObj = new Scanner(System.in);
        System.out.println("Enter fisr number");
        double val1 = myObj.nextDouble();
        System.out.println("Enter fisr number");
        double val2 = myObj.nextDouble();
        double result = 0.0d;
        String addition = "a";
        System.out.println("Enter what you want to do");
        String opCode = myObj.next().toLowerCase();
        while(!opCode.equals("e")) {
            if (opCode.equals(addition)){
                result = val1 + val2;
                System.out.println(result);}
            else if (opCode.equals("s")){
                result = val1 - val2;
                System.out.println(result);}
            else if (opCode.equals("d")){
                result = val1 / val2;
                System.out.println(result);}
            else if (opCode.equals("m")){
                result = val1 * val2;
                System.out.println(result);}
            else
                System.out.println("Error please enter true character: ");
            System.out.println("Enter what you want to do"+"E for exit , a for addition , s for subtraction , d for Division , m for multiplication ");
            opCode = myObj.next();
        }
        System.out.println("Good bye! See you :) ");
    }
}

с изменением

String opCode = myObj.next();

до

String opCode = myObj.next().toLowerCase();

в строке 15 и изменить

opCode = myObj.next();

до

opCode = myObj.next().toLowerCase();

в строке 32

Все вводы будут строчными. Всего наилучшего.

0 голосов
/ 14 марта 2019

Пожалуйста, проверьте условие в цикле while, оно завершается, если введенный вход не является 'E' .

Чтобы это работало, измените его следующим образом:

while(!opCode.equals("E")) {
// Operation code
}

Кстати, чтобы быть более понятным с операциями, вы можете напечатать, как показано ниже:

System.out.println("Enter what you want to do, 'a': for addition, 's': for subtraction, 'd': for division, 'm': for multiplication ");
0 голосов
/ 14 марта 2019

Введенное вами условие

while(opCode.equals("E")){

}

не соответствует данному сценарию.Он не будет выполняться внутри блока while, пока вы не введете E. Итак, тогда ни одно из ваших условий if else не удовлетворяет .

Добавление,

 while(!opCode.equals("E")){

}

для кода вам не поможет.Спасибо!

0 голосов
/ 14 марта 2019

Пожалуйста, введите

while(!opCode.equals("E"))

Я надеюсь, что это может помочь вам!

Спасибо.

...