java - 压入并评估堆栈 <double>

标签 java stack double evaluation postfix-notation

第一次发帖,请多多指教,如何改进。

我正在开发一个程序,将中缀表示法转换为后缀,然后进行评估。我向 postfix 的转换进展顺利,但我的评估遇到了一些问题。在下面的代码中,当我尝试将操作数转换为双变量“数字”时,它们不会保持其值(请参阅下面的运行时输出)。这是相关方法的一部分(打印语句仅用于调试)。

public boolean evaluatePostfix(StringBuffer postfix)
    {
        Stack <Double> operand = new Stack <Double>();//stack to hold operand values
        double answer = 0; //variable to hold result of expression
        boolean error = false; //tests for input error
        int pos = 0; //temp veraible stores position in postfix expression
        double number = 0; //temp variable to convert char to double. also stores that value for reference
        double val1 = 0; //first value for operations
        double val2 = 0; //second value for operations
        double val3 = 0; //answer for val1 and val2

        while (!error && pos < postfix.length())
                {
                    System.out.println(postfix.charAt(pos));
                    if (postfix.charAt(pos) == ' ')
                        ; //do nothing
                    else if (Character.isDigit(postfix.charAt(pos)))
                    {
                        number = Double.parseDouble(postfix.substring(pos));
                        System.out.printf ("number = %f", number);
                        operand.push(number);
                    }
                    else
                    {
                        val1 = operand.pop();
                        val2 = operand.pop();
                        System.out.printf ("val1: %f\tval2: %f\n", val1, val2);

---At runtime--- 1

number = 49.000000

8

number = 56.000000

+

val1: 56.000000

val2: 49.000000

val3 = 105.000000

105.0

最佳答案

您正在获取每个字符的 ASCII 值,例如'1' => 49 并将其插入堆栈。

您最有可能想要的是使用 Scanner读取从您输入的文本转换而来的数字。

关于java - 压入并评估堆栈 <double>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347975/

相关文章:

java - 我可以使用 'for each' 循环从字符串参数创建 int 数组吗?

c++ - glGetFloatv 导致堆栈粉碎

python:从列表创建列表返回较少的项目

java - 如何使 'double' 与 'integer' 对应

c - 程序的奇怪响应

Java类的继承

java - 如何在 JasperReports 中使用现有的 PDF 信笺

java - 我需要一个正则表达式来替换第三个匹配的子字符串

c++ - 返回堆栈中的值 - C++

java - ArrayOutOfBoundException 运行时错误