#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)
atSystem.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.