# How can I get my loop to keep re-entering new variables and operators to continue to calculate?

I am attempting to have the user enter in multiple values and the computer would then return the answer. For instance they would enter in 10 + 11 - 15 / 12 ? then the it would output the answer. I have tested this and it only will take the first number and the last operator and the last number entered and calculate that answer. (output from about would of been 10/12) From what I can tell my math methods are working correctly, but I have attached them as well. How can I get it to continue to read in new user inputs then do the math to figure out the answer?

This is my code:

```static void evaluate (){
// this loads a scanner and prompts the user for input
Scanner input = new Scanner(System.in);
System.out.println("Enter the expression: ");
int num = 0;
int input1, input2;
char operator = '+' ;
input1 = input.nextInt();
operator = input.next().charAt(0);
input2 = input.nextInt();
if(operator == '?')
return;
//this loop will continue until ? is entered
do{
if(operator == '?')
break;
operator = input.next().charAt(0);
input2 = input.nextInt();
// this will detect which operator is used
switch (operator) {
break;
case '-': answer = subtract(input1, input2);
break;
case '*': answer = multiply(input1, input2);
break;
case '/': answer = division(input1, input2);
break;
case '%': answer = remainder(input1, input2);
} } while (operator != '?');
System.out.println("The result is " + answer);
}
```

These are the methods for addition, subtraction, division, multiplication, and modulos.

```// this is the math if a + is used as an operator
static int addition (int num1, int num2){
}
// this is the math if a - is used as an operator
static int subtract (int num1, int num2){
int minus;
minus = num1 - num2;
return minus;
}
// this is the math if a * is used as an operator
static int multiply (int num1, int num2){
int multi;
multi = num1 * num2;
return multi;
}
// this is the math if a / is used as an operator
static int division (int num1, int num2){
int div;
div = num1 / num2;
return div;
}
// this is the math if a % is used as an operator
static int remainder (int num1, int num2){
int modulos;
modulos = num1 % num2;
return modulos;
}
```

Your logic is perfectly fine and all you have to do is put this condition if(operator == '?') break; after you read the value in operator by doing operator = input.next().charAt(0);.

One other thing is that you are never changing the value of input1. You should start assigning answer back to input1 after performing any operation.

Here is the modified code snippet:

```public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter The Expression: ");
int answer = 0, num = 0, input1, input2;
char operator = '+' ;

input1 = input.nextInt();

//this loop will continue until ? is entered
do {
operator = input.next().charAt(0);
if(operator == '?') break;
input2 = input.nextInt();
// this will detect which operator is used
switch (operator) {
break;
case '-': answer = subtract(input1, input2);
break;
case '*': answer = multiply(input1, input2);
break;
case '/': answer = division(input1, input2);
break;
case '%': answer = remainder(input1, input2);
}
/* Input1 will be the answer now */
} while (operator != '?');
}

// this is the math if a + is used as an operator
static int addition (int num1, int num2){
}
// this is the math if a - is used as an operator
static int subtract (int num1, int num2){
int minus;
minus = num1 - num2;
return minus;
}
// this is the math if a * is used as an operator
static int multiply (int num1, int num2){
int multi;
multi = num1 * num2;
return multi;
}
// this is the math if a / is used as an operator
static int division (int num1, int num2){
int div;
div = num1 / num2;
return div;
}
// this is the math if a % is used as an operator
static int remainder (int num1, int num2){
int modulos;
modulos = num1 % num2;
return modulos;
}
```

Input:

```10 + 11 - 15 / 2 ?
```

Output:

```Result: 3
```

Also, I hope you are putting white spaces between your input numbers like what you have shown in the question above. Note that with the way you are reading input 10 + 11 - 15 / 12 ? will work fine but 10+11-15/12? will not.