Когда я запускаю свой коммутатор и выбираю опцию, он будет постоянно зацикливать эту опцию - PullRequest
0 голосов
/ 11 октября 2019

Моя цель - попросить пользователя ввести операцию, она будет рассчитана из другого класса, который выполняет базовые вычисления, затем возьмет результат и попросит пользователя снова выбрать операцию и продолжить с тем женомер. Или выберите C и очистите число до 0



import java.util.Scanner;

public class CalculatorClient {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Welcome to calculator\n You will be able to use this program to add, subtract, multiply, and divide values!\n");
        double number1;
        System.out.println("Enter a number: ");
        number1 = keyboard.nextDouble();
        Calculator obj1 = new Calculator(number1);
        keyboard.nextLine();

        // System.out.println("Please enter an operation ( + , - , / , *) :");
        // input=keyboard.nextLine();

        System.out.println("Please enter an operation ( + , - , / , *) :");
        String input = keyboard.nextLine();;

Я не уверен, почему, но этот цикл while, который я использую для проверки ввода оператора, не работает, когда я его запускаю.

        while  (!"+".equals(input) || !"-".equals(input) || !"/".equals(input) || !"*".equals(input)) {
                System.out.println("That is not a valid operation, please enter an operation ( + , - , / , *) :");
                input = keyboard.nextLine();
        }    



        int counter=0;    
        Loopy:
        while(counter<1)

        {
            switch (input) {
                case "+": {
                    int add;
                    System.out.println("Enter a second number to add: ");
                    add = keyboard.nextInt();
                    System.out.println("\nThe sum is: ");
                    System.out.println("The nubmer is now ");
                    System.out.println(obj1.getNumber());
                    System.out.println(obj1.add(add));
                    number1 = obj1.getNumber();
                    break;
                }   
                case "-": {
                    int subtract;
                    System.out.println("Enter a second number to subtract: ");
                    subtract = keyboard.nextInt();
                    System.out.println("\nThe difference is: ");
                    System.out.println(obj1.subtract(subtract));
                    System.out.println("The nubmer is now ");
                    System.out.println(obj1.getNumber());
                    number1 = obj1.getNumber();
                    break;
                }
                case "/": {
                    int div;
                    System.out.println("Enter a second number to divide");
                    div = keyboard.nextInt();
                    System.out.println("\nThe quotient is: ");
                    System.out.println(obj1.divide(div));
                    System.out.println("The nubmer is now ");
                    System.out.println(obj1.getNumber());
                    number1 = obj1.getNumber();
                    break;
                }
                case "*": {
                    int times;
                    System.out.println("Enter a second nubmer to multiply");
                    times = keyboard.nextInt();
                    System.out.println("\nThe product is: ");
                    System.out.println("The nubmer is now ");
                    System.out.println(obj1.getNumber());
                    System.out.println(obj1.multiply(times));
                    number1 = obj1.getNumber();
                    break;
                }
                case "C": {
                    obj1.setNumber(number1);
                    System.out.println("The nubmer is now ");
                    System.out.println(obj1.getNumber());
                    break;

                }
            }

        counter--;

Эта печать по какой-то причине заканчивается печатью дважды

        System.out.println("\nPlease enter an operation ( + , - , / , *) :");
        input = keyboard.nextLine();
        continue;
        }
    }
}

````

Here is my calculator program (My instruction is to make it on a separate file
````
public class Calculator
{
    private double number;

    Calculator(double x){number=x;}
    Calculator(){}

    public void setNumber(double x){number=x;}
    public double getNumber(){return number;}



            public double add(double a){
                number+=a;
                return (number);
            } 
            public double subtract(double a){
                number-=a;
                return (number);
            }

            public double multiply(double a){
                number*=a;
                return (number);
            }

            public double divide(double a){
                number/=a;
                return (number);
            }
}






1 Ответ

0 голосов
/ 11 октября 2019

Я думаю, что ваша проблема в следующих строках: int counter = 0;
Loopy: while (counter <1) ** ваша логика для методов ** и в конце - counter -; </p>

поэтому счетчик всегда меньше 1 и, следовательно, всегда в цикле

...