Java 如何使用连续的用户输入更新输出,直到以“结束”&引用;?

Java 如何使用连续的用户输入更新输出,直到以“结束”&引用;?,java,if-statement,math,methods,operators,Java,If Statement,Math,Methods,Operators,Java新手,试图弄清楚如何保持用户给出的计算表达式持续运行,直到他们键入“.”终止它,然后打印输出。我需要使用我已经放置的main之外的方法。我不必担心操作顺序,但我不知道如何在跟踪其输出的同时进行连续的操作/数字,然后在放置“”时最终打印结果 输出: 输入表达式: 1 + 26 * 2 % 19 / 5 . 结果是3个类似于: while(expression!='.'){ if (expression == '+') { add(num1, num2); } e

Java新手,试图弄清楚如何保持用户给出的计算表达式持续运行,直到他们键入“.”终止它,然后打印输出。我需要使用我已经放置的main之外的方法。我不必担心操作顺序,但我不知道如何在跟踪其输出的同时进行连续的操作/数字,然后在放置“”时最终打印结果

输出:

输入表达式:

1
+
26
*
2
%
19
/
5
.
结果是3个类似于:

while(expression!='.'){
 if (expression == '+') {
        add(num1, num2);
    } else if (expression == '-') {
        subtract(num1, num2);
    } else if (expression == '*') {
        multiply(num1, num2);
    }else if (expression == '/') {
        divide(num1, num2);
    } else if (expression == '%') {
        modulus(num1, num2);
    }
}

这就是你要问的吗?

我建议从“0+”开始,然后是用户输入的内容。因为你不需要对第一个数字进行特殊处理

import java.util.Scanner;

class Main
{

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the expression: ");

        // Start with "0 +"
        int value = 0;
        String operator = "+";

        while (true) // loop
        {
            int operand = scan.nextInt();

            switch (operator)
            {
                case "+": value += operand; break;
                case "-": value -= operand; break;
                case "*": value *= operand; break;
                case "/": value /= operand; break;
                case "%": value %= operand; break;
                default: throw new UnsupportedOperationException(operator);
            }

            operator = scan.next();

            if (".".equals(operator))
            {
                break; // exit the loop
            }
        }

        System.out.println("result=" + value);
        scan.close();
    }

}
然而,该算法不关心算子顺序的数学规则。它只是像一个便宜的3欧元袖珍计算器一样从左到右处理输入

基于if-else构造和方法的其他示例:

import java.util.Scanner;

class Main
{

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the expression: ");

        // Start with "0 +"
        int value = 0;
        char operator = '+';

        while (true) // loop
        {
            int operand = scan.nextInt();

            if (operator == '+') {
                value=add(value, operand);
            } else if (operator == '-') {
                value=subtract(value, operand);
            } else if (operator == '*') {
                value=multiply(value, operand);
            } else if (operator == '/') {
                value=divide(value, operand);
            } else if (operator == '%') {
                value=modulus(value, operand);
            } else {
                throw new UnsupportedOperationException(String.valueOf(operator));
            }

            operator = scan.next().charAt(0);

            if (operator=='.')
            {
                break; // exit the loop
            }
        }

        System.out.println("result=" + value);
        scan.close();
    }

    static int add(int num1, int num2) {
        return (num1 + num2);
    }

    static int subtract(int num1, int num2) {
        return (num1 - num2);
    }

    static int divide(int num1, int num2) {
        return (num1/num2);
    }

    static int multiply(int num1, int num2) {
        return (num1*num2);
    }

    static int modulus(int num1, int num2) {
        return (num1%num2);
    }
}

对谢谢但现在,当我输入用户输入的例如“2+4-1”时,它不会打印出结果。我该怎么做呢?这很好,但是当使用我从main中添加的方法时,有没有办法做到这一点呢?当然你可以编写
case“+”:value=add(value,operand);中断甚至使用if-else构造。但是别忘了将操作结果存储在变量
value
中。那么我应该在哪里添加if-else构造呢?switch构造是否已经考虑了if-else所做的工作?我按照您提到的那样进行了编辑,并在我的方法中添加了内容,但现在它在java.base/java.util.Scanner.throwFor(Scanner.java:939)的java.base/java.util.Scanner.next(Scanner.java:1594)中的线程“main”java.util.InputMismatchException中表示异常位于java.base/java.util.Scanner.nextInt(Scanner.java:2258)处的java.base/java.util.Scanner.nextInt(Scanner.java:2212)处的Main.Main(Evaluate.java:17)
import java.util.Scanner;

class Main
{

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the expression: ");

        // Start with "0 +"
        int value = 0;
        char operator = '+';

        while (true) // loop
        {
            int operand = scan.nextInt();

            if (operator == '+') {
                value=add(value, operand);
            } else if (operator == '-') {
                value=subtract(value, operand);
            } else if (operator == '*') {
                value=multiply(value, operand);
            } else if (operator == '/') {
                value=divide(value, operand);
            } else if (operator == '%') {
                value=modulus(value, operand);
            } else {
                throw new UnsupportedOperationException(String.valueOf(operator));
            }

            operator = scan.next().charAt(0);

            if (operator=='.')
            {
                break; // exit the loop
            }
        }

        System.out.println("result=" + value);
        scan.close();
    }

    static int add(int num1, int num2) {
        return (num1 + num2);
    }

    static int subtract(int num1, int num2) {
        return (num1 - num2);
    }

    static int divide(int num1, int num2) {
        return (num1/num2);
    }

    static int multiply(int num1, int num2) {
        return (num1*num2);
    }

    static int modulus(int num1, int num2) {
        return (num1%num2);
    }
}