This is a simple Calculator java program. I am trying to build 4 operations (+, -, * & /) using java.
To make program modular I have created multiple method and calling them in Main() method. Problem is method ‘calcContinue();’ is not invoking from the main method. I am not getting error or warnings. On running, main() method is invoking chooseOperation() and allow user to enter num1 and num2. However, nothing is after that. I am expecting main() to invoke ‘calcContinue() method as well.
Please advise suggestions how can I correct my code to make ‘calcContinue()’ called from the main.
import java.util.*;
public class Calculator {
static double num1, num2;
static int operator;
static double result;
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);
}
}
Advertisement
Answer
First of all, your code works just fine. The problem is that right at the beginning of calcContinue() you tell java IO to wait 2 times to enter an input. Just replace
System.out.print("do you want to perform more operation t Y/N ?" + scanObj.next().charAt(0));
with
System.out.print("do you want to perform more operation t Y/N ?");
In the next line you are reading the input from the user. So there is no need for calling scanObj.next().charAt(0) inside the print statement.