【问题标题】:Stack is not handling data properly堆栈未正确处理数据
【发布时间】:2016-01-13 11:45:38
【问题描述】:

好的,所以我正在研究一种将数字字符串拆分为字符并将每个字符作为整数顺序推送到两个不同堆栈中的方法,直到它看到操作员跳过它,然后继续将其余字符作为整数推送入栈。我的堆栈不断显示未被读取的数字。正在读取的文本文件如下所示:28302830-293817302

public void pushToStack(String line) {

    boolean pushToFirstStack = true;

    for (int i = 0; i < line.length(); i++) {

        if (Character.isDigit(line.charAt(i))) {

            if(pushToFirstStack){
                System.out.print(Character.getNumericValue(line.charAt(i)));
                Stack1.push(Character.getNumericValue(line.charAt(i)));
            }else{
                System.out.print(Character.getNumericValue(line.charAt(i)));
                Stack2.push(Character.getNumericValue(line.charAt(i)));
            }

            pushToFirstStack = !pushToFirstStack;
        } else {
            //sets operator
            if(line.charAt(i) == add){
                return;
            }
            else{
                setAdd = false;
            }
        }
    }
    //displaying stacks debug
    Stack1.display();
    Stack2.display();
}

【问题讨论】:

  • 你能打印你得到的输出吗?
  • 注意:为什么不将字符串划分为字符数组,然后对其进行迭代呢?它将避免每次都使用line.charAt(i)

标签: java string parsing stack


【解决方案1】:

您没有提供示例输出这一事实让人有点难以回答,但我怀疑 pushToFirstStack = !pushToFirstStack; 行应该在 if 的 else 分支中。

现在,您正在用奇数索引的数字构建第一个堆栈,然后用偶数索引的数字构建第二个堆栈,从而产生交错输出。

【讨论】:

  • 这是目前的目标,它应该读取第一个字符,将其解析为 int,将其推送到第一个堆栈,然后读取下一个字符,将其解析为 int,然后推送它到第二个堆栈并继续前进
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2020-09-18
  • 1970-01-01
  • 2020-01-18
相关资源
最近更新 更多