Программа Java Calculator, которая останавливается, когда пользователь вводит точку - PullRequest
1 голос
/ 22 октября 2019

Инструкции: измените вашу программу, чтобы пользователь мог связывать операции вместе. Ввод целого числа, оператора, а затем другого целого числа больше не должен автоматически завершать программу. После отображения пользователю результата первой операции разрешите пользователю ввести другую операцию, а затем другое целое число. Затем программа должна использовать результат первой операции как целое число слева от операции, а вновь введенное целое число как целое число справа от операции. После того, как результат отображается, пользователь должен иметь возможность ввести точку (.), Чтобы завершить программу. После ввода периода программа должна распечатать сообщение «Программа была закрыта».

Нужна помощь, чтобы выяснить, как остановить программу, когда пользователь вводит период, через который я пытался это сделать. do-while Пример : 3 + 5 Результат: 8 +3 Результат: 11 -5 Результат: 6. Программа была закрыта.

ПОЖАЛУЙСТА, ПОМОГИТЕ

import java.util.Scanner;
class Main {
    static final String VERSION = "1.0";
    public static void main(String[] args) {

    public static void printCalculatorInstructions(){
          System.out.println("Welcome to version "+VERSION+" of the Calculator.");
          System.out.println("In order to use the calculator, do the following:");
          System.out.println("1. Enter the integer that is left of the operator.");
          System.out.println("2. Press enter.");
          System.out.println("3. Enter an operation. Available operations are:\n\t + (addition) \n\t - (subtraction) \n\t * (multiplication) \n\t / (division) \n\t % (remainder) \n\t ^ (exponentiation)");
          System.out.println("4. Press enter.");
          System.out.println("5. Enter the integer to the right of the operator.");
          System.out.println("6. Press enter.");
          System.out.println("7. Look at the result that is printed out!");
      }

        printCalculatorInstructions();

        // Get input for calculator
        Scanner keyboard = new Scanner(System.in);
        int num1 = keyboard.nextInt();
        keyboard.nextLine(); //clear line break character: \n
        String operator = keyboard.nextLine();
        int num2 = keyboard.nextInt();
        int loop = 0;

        do
        {
          //Call the method to perform the calculation based on what operation needs to be used
          if(operator.equals("+")){
            addition(num1, num2);
          }else if(operator.equals("-")){
            subtraction(num1, num2);
          }//you will need to write more else if statements as you implement each of the operators
          else if (operator.equals("*")){
            multiplication(num1, num2);
          }
          else if (operator.equals("/")){
            division(num1, num2);
          }
          else if (operator.equals("%")){
            modulardivision(num1, num2);
          }
          else if (operator.equals("^")){
            exponentiation(num1, num2);
          }

      public static int addition(int a, int b){
          int result = a + b;
          System.out.println("Result: " + result);
          return result;
          result = result +
      }

      public static int subtraction(int a, int b){
          //fill in method here
          int result = a - b;
          System.out.println("Result: " + result);
          return result;
      }

      //write the next method for multiplication here.
      public static int multiplication(int a, int b){
        int result = a * b;
        System.out.println("Result: " + result);
        return result;
      }

      //Then write the methods for division, the % operator, and finally exponentiation.
      public static int division(int a, int b){
        int result = a / b;
        System.out.println("Result: " + result);
        return result;
      }

      public static int modulardivision(int a, int b){
        int result = a % b;
        System.out.println("Result: " + result);
        return result;
      }

      public static double exponentiation(double a, double b){
        double result = Math.pow(a,b);
        System.out.println("Result: " + result);
        return result;
      }


      if (a == .) {
        int loop = 1;
      }

       } while (loop != 1);
}

/* retrun result;
void = nothing is being return   void ! = addition*/ ```



1 Ответ

1 голос
/ 22 октября 2019

Ваш код имеет серьезные проблемы с синтаксисом.


Попробуйте:

import java.util.Scanner;

public class Calculator {
    static final String VERSION = "1.0";

    public static void printCalculatorInstructions(){
        System.out.println("Welcome to version "+VERSION+" of the Calculator.");
        System.out.println("In order to use the calculator, do the following:");
        System.out.println("1. Enter the integer that is left of the operator.");
        System.out.println("2. Press enter.");
        System.out.println("3. Enter an operation. Available operations are:\n\t + (addition) \n\t - (subtraction) \n\t * (multiplication) \n\t / (division) \n\t % (remainder) \n\t ^ (exponentiation)");
        System.out.println("4. Press enter.");
        System.out.println("5. Enter the integer to the right of the operator.");
        System.out.println("6. Press enter.");
        System.out.println("7. Look at the result that is printed out!");
    }

    public static int addition(int a, int b){
        int result = a + b;
        System.out.println("Result: " + result);
        return result;
    }

    public static int subtraction(int a, int b) {
        int result = a - b;
        System.out.println("Result: " + result);
        return result;
    }

    public static int multiplication(int a, int b) {
        int result = a * b;
        System.out.println("Result: " + result);
        return result;
    }

    public static int division(int a, int b) throws ArithmeticException {
        int result = a / b;
        System.out.println("Result: " + result);
        return result;
    }

    public static int modulardivision(int a, int b) {
        int result = a % b;
        System.out.println("Result: " + result);
        return result;
    }

    public static double exponentiation(double a, double b) {
        double result = Math.pow(a, b);
        System.out.println("Result: " + result);
        return result;
    }   

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

        boolean toStop = false;

        while (toStop == false) {
            printCalculatorInstructions();

            int num1 = keyboard.nextInt();
            keyboard.nextLine(); //clear line break character: \n
            String operator = keyboard.nextLine();
            int num2 = keyboard.nextInt();

            switch (operator) {
            case "+":
                addition(num1, num2);
                break;
            case "-":
                subtraction(num1, num2);
                break;
            case "*": 
                multiplication(num1, num2);
                break;
            case "/":
                try {
                    division(num1, num2); // in case value of num2 is zero, this won't terminate the program
                } catch (ArithmeticException e) {
                    System.out.println("Value of num2 was zero. Enter a non-zero value for num2.");
                }
                break;
            case "%":
                modulardivision(num1, num2);
                break;
            case "^":
                exponentiation(num1, num2);
                break;
            default:
                toStop = true; // any other operator, character or string entered here will stop the loop
                break;
            }
        }

        keyboard.close();
    }
}

Я сделал цикл while, который выполнялся до тех пор, пока логическое условие toStop == false не станет неправильным, т.е. значение toStop становится true. Это значение будет изменено, когда пользовательский ввод будет отличаться от указанных вами операторов. Вместо операторов if-else я использовал оператор switch, чтобы упростить процесс.

Надеюсь, это поможет.

...