import java.util.Scanner;
public class Calculator{
public static void main(String[] args){
long n1, n2, res, rem;
char op = 'a';
boolean otOp = true;
Scanner sc1 = new Scanner(System.in);
while(otOp == true){
boolean valid1 = false;
System.out.println("insert the first number:");
n1 = sc1.nextInt();
while(valid1 == false){
System.out.println("insert operator:");
System.out.println("(+, -, :, X o ^)");
op = sc1.next().charAt(0);
if(op != '+' && op != '-' && op != ':' && op != 'X' && op != 'x' && op != '^'){
Error();
} else {
valid1 = true;
}
}
System.out.println("insert the second number:");
n2 = sc1.nextInt();
switch(op){
case '+':
res = n1 + n2;
Oper(" addition ", res, otOp, n1, n2); //ERROR IS HERE
if(Oper(" addition ", res, otOp, n1, n2) == true){ //In this line, the condition has the same call of the previous line
otOp = true;
} else{
otOp = false;
}
break;
case '-':
res = n1 - n2;
Oper(" substraction ", res, otOp, n1, n2); //same here
if(Oper(" substraction ", res, otOp, n1, n2) == true){ //and here
otOp = true;
} else{
otOp = false;
}
break;
case ':':
res = n1 / n2;
Oper(" division ", res, otOp, n1, n2); //^^
if(Oper(" division ", res, otOp, n1, n2) == true){ //==
otOp = true;
} else{
otOp = false;
}
break;
case 'X':
case 'x':
res = n1 * n2;
Oper(" multiplication ", res, otOp, n1, n2); //^^
if(Oper(" multiplication ", res, otOp, n1, n2) == true){ //==
otOp = true;
} else{
otOp = false;
}
break;
case '^':
long pot = 1;
for (int i = 1; i <= n2; i++){
pot *= n1;
}
res = pot;
Oper(" power ", res, otOp, n1, n2); //^^
if(Oper(" power ", res, otOp, n1, n2) == true){ //==
otOp = true;
} else{
otOp = false;
}
break;
}
}
}
static void Error(){
System.out.println("ERROR, invalid option");
}
static boolean Oper(String oper, long res, boolean otOp, long n1, long n2){
boolean valid2 = false;
Scanner sc2 = new Scanner(System.in);
System.out.println("the result of the" + oper + "is " + res);
if(oper == " division "){
System.out.println("reminder: " + (n1 % n2));
}
System.out.println("any other operation? (y/Y = Yes, n/N = No)");
char in = sc2.next().charAt(0);
while(valid2 == false){
if(in == 'y' || in == 'Y'){
otOp = true;
valid2 = true;
} else if(in == 'n' || in == 'N'){
otOp = false;
valid2 = true;
} else{
Error();
}
} return otOp;
}
}