Невозможно вызвать несколько методов в основном методе программы Java Calculator

#java

#java

Вопрос:

Это простая Java-программа-калькулятор. Я пытаюсь построить 4 операции ( , -, * amp; /), используя java.

Чтобы сделать программу модульной, я создал несколько методов и вызвал их в методе Main(). Проблема в том, что метод ‘calcContinue ();’ не вызывается из основного метода. Я не получаю ошибок или предупреждений. При запуске метод main() вызывает функцию chooseOperation() и позволяет пользователю вводить num1 и num2. Однако после этого ничего не происходит. Я ожидаю, что main() также вызовет метод ‘calcContinue().

Пожалуйста, посоветуйте, как я могу исправить свой код, чтобы вызвать ‘calcContinue ()’ из основного.

 import java.util.*;

public class Calculator {

    static double num1, num2;
    static int operator;
    static double resu<
    static Scanner scanObj = new Scanner(System.in);

    public static void main(String[] args) {        //main method
        System.out.print("enter first number:");                                            //user will enter number 1
        num1 = scanObj.nextDouble();

        System.out.print("enter Second number:");                                           //user will enter number 1
        num2 = scanObj.nextDouble();

        chooseOperation();
        calcContinue();
    }

    public static void chooseOperation() {          //user will choose calculator operation using 1-4

        System.out.println("Please select"
                  "n 1. Addition "
                  "n 2. Subtraction"
                  "n 3. Multiplication"
                  "n 4. Division");

        System.out.print("enter the calculator operationt"   scanObj.nextLine());  //user will enter calculator operation
        operator = scanObj.nextInt();

        if (operator == 1 ) {
            addition();
        }

        else if (operator == 2) {
            subtraction();
        }

        else if (operator == 3) {
            multiplication();
        }

        else {
            division();
        }

    }

    public static char calcContinue() {                 //method for user to select if they want to continue
        System.out.print("do you want to perform more operation t Y/N ?"   scanObj.next().charAt(0));

        char a = scanObj.next().charAt(0);

        if (a == 'Y' || a == 'y') {
            Calculator.chooseOperation();

        } else {
            System.out.println("Calculator operation is terminated");
        }

        return a;
    }

    public static void addition() {     //method for addition
        result = num1   num2;
        System.out.println("Addition oft"  num1  "and"  num2  "ist:"   result);
    }

    //method for subtraction
    public static void subtraction() {
        result = num1 - num2;
        System.out.println("subtraction oft"  num1  "and"  num2  "is:t"   result);
    }

    //method for multiplication
    public static void multiplication() {
        result = num1 * num2;
        System.out.println("multiplication oft"  num1  "and"  num2  "is:t"   result);
    }

    //method for division
    public static void division() {
        result = num1/num2;
        System.out.println("Division oft"  num1  "and"  num2  "is:t"   ""   result);
    }
}
 

Комментарии:

1. какую ошибку вы получаете?

2. Узнайте, как использовать отладчик. Отныне вам это будет нужно каждый день в вашей жизни разработчика. Это избавит вас от головной боли и защитит вас от потери времени, которое вам лучше использовать. 😉

3. @Umeshwaran я не получаю ошибок или предупреждений. При запуске метод main() вызывает chooseOperation() и позволяет пользователю вводить num1 и num2. Однако после этого ничего не происходит. Я ожидаю, что main() также вызовет метод ‘calcContinue().

4. Ваш код будет работать нормально. Просто удалите scanObj.next().charAt(0) at System.out.print("do you want to perform more operation t Y/N ?" scanObj.next().charAt(0)); . Это должно быть просто System.out.print("do you want to perform more operation t Y/N ?"); .

5. Причина в том, что вы получаете a charAt(0) в sysout() . Поэтому java IO будет ждать, пока вы введете ввод. Только тогда он выполняет следующий оператор. Надеюсь, это решит вашу проблему

Ответ №1:

Прежде всего, ваш код работает просто отлично. Проблема в том, что в самом начале calcContinue() вы указываете java IO подождать 2 раза, чтобы ввести ввод. Просто замените

System.out.print("do you want to perform more operation t Y/N ?" scanObj.next().charAt(0));

с

System.out.print("do you want to perform more operation t Y/N ?");

В следующей строке вы читаете ввод от пользователя. Таким образом, нет необходимости вызывать scanObj.next().charAt(0) внутри инструкции print.