【问题标题】:What is the most efficient way to perform math operations with a character array in Java? [duplicate]在 Java 中使用字符数组执行数学运算的最有效方法是什么? [复制]
【发布时间】:2020-10-15 07:14:02
【问题描述】:

我是一个初学者——我应该写一个类来计算 char 数组中给定数学表达式的结果,同时考虑运算符 +、-、* 和 / 的优先级。例如:

输入:char[] a = {'1', '1','1', '-', '1', '2','*', '2'},输出:87

我能想到的所有解决方案都涉及 if 语句或凌乱的嵌套循环。有什么建议吗?提前感谢您的帮助。 顺便说一下,这是我目前所拥有的:

import java.util.Scanner;

public class MathInCharArray {

    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        System.out.print("Input a calculation without spaces, using the operators +, -, *, or /: ");
        String userInput = scnr.next();
        char[] equationArray = new char[userInput.length()];
        boolean operator = false;

        for (int i = 0; i < userInput.length() - 1; ++i) {
            equationArray[i] = userInput.charAt(i);
        }

        for (int i = 1; i < userInput.length() - 1; ++i) {
            for (int j = 0; j < userInput.length() - 2; ++j) {
                
            }
        }

    }
}

【问题讨论】:

  • 你考虑过使用Javas enum吗?虽然它可能被认为是一个更高级的主题,但enum 非常适合这里,尤其是如果您可以使用恒定的特定方法。
  • 使用堆栈。推送/弹出参数。这是一个经典问题,已经解决了第 1 次。
  • 通常有一个操作数栈(像“11”这样的值)和一个带有值的运算符栈(像“+”)。您从一个空操作数“”开始,也在每个二元运算符之后。
  • 好吧,String 的构造函数之一接受char[]...
  • @jhamon 是的,确实如此!非常感谢!

标签: java arrays loops operator-precedence


【解决方案1】:

您可以尝试将两个数字连接到一个字符串变量中,将运算符存储到一个单独的变量中,然后在您的运算符中使用 switch 语句。在计算表达式时,您可以从那里将数字转换为双精度数。

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多