I'm not very good at explaining things but can someone try to explain to me why my user input variables are not being sent to my methods in another class?
This is my main class:
import java.util.Scanner; //import scanner class for user input
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);//declare scanner object called input for user input
char operation = '\u0000';
double num1 = 0;
double num2 = 0;
Calculator allMath[] = new Calculator[4];
allMath[0] = new Addition(num1, num2, operation);
allMath[1] = new Subtraction(num1, num2, operation);
allMath[2] = new Multiplication(num1, num2, operation);
allMath[3] = new Division(num1, num2, operation);
System.out.println("This calculator can perform basic mathematic functions such as "
+ "addition, subtraction, multiplication, and division. "
+ "\nOnce you are finished using the calculator please enter a ! character.");
System.out.println("Please enter in which operation you would like to perform. "
+ "Enter + for addition, - for subtraction, * for multiplication "
+ "and / for division.");
operation = input.next().charAt(0);
while (operation != '!')
{
System.out.println("Please enter the first number for your calculation.");
num1 = input.nextDouble();
System.out.println("Please enter the second number for your calculation.");
num2 = input.nextDouble();
switch (operation)
{
case '+':
allMath[0].calculate();
break;
case '-':
allMath[1].calculate();;
break;
case '*':
allMath[2].calculate();
break;
case '/':
allMath[3].calculate();
break;
default:
}
}
}
}
This is an example of one of my subclasses that I am trying to send the variables to. All the other ones are the same with respect to the difference in calculation.
public class Addition extends Calculator
{
public double num1;
public double num2;
public char operation;
public Addition (double num1, double num2, char operation)
{
this.num1 = num1;
this.num2 = num2;
this.operation = operation;
}
@Override
public void calculate()
{
System.out.println((num1)+ " + " + (num2) + " is " + (num1 + num2));
}
}
My superclass is just an abstract class with an abstract method per my school project guiedlines. I am taking an OOP class that is focusing on the concepts of OOP through java so I only know the basics of java. I am confused on what else I need to do in order for my method to receive the user input numbers.
Calculatoronce, with0as thedoubleparams.calculateshould take the numbers and perform their calculation. Unrelated, but it'd be better if#calculatedid only that: calculate. What to do with the results of the calculation should be up to the caller.Calculatorfor each operation (as opposed to once at the beginning), which would allow the currentCalculatorimplementations to work as intended. Which is "better" depends on goals.