gpt4 book ai didi

java - pop()ing 堆栈似乎并没有删除这些值

转载 作者:行者123 更新时间:2023-12-01 22:59:05 26 4
gpt4 key购买 nike

该程序应该读取字符串输入的值并返回结果。

但是,当我使用

System.out.println(Arrays.toString(stack.toArray()));

为了检查堆栈在最后甚至在程序期间的样子,我注意到堆栈的 pop() 方法似乎没有删除它返回的元素。

我可能做了一些非常错误的事情,但我一直无法弄清楚。

我真的很感激任何见解!

// Test example : (((1+1)+1)+1)

import java.util.*;

public class Task2
{
public static void main(String[] args) //run Start() method
{
System.out.print("Enter an expression, or press Enter to quit: ");

Stack<String> stack = new Stack<String>();

Scanner scanner = new Scanner(System.in);

String n = scanner.nextLine();

if(!n.isEmpty())
{
for(int i = 0 ; i < n.length() ; i++)
{
if(!(n.charAt(i) == ')'))
{
stack.push(n.charAt(i) + "");
}
else
{
int two = Integer.parseInt(stack.pop());
char op = (stack.pop()).charAt(0);
int one = Integer.parseInt(stack.pop());

switch(op)
{
case '+':{stack.push((one + two) + "");}
case '-':{stack.push((one - two) + "");}
case '*':{stack.push((one * two) + "");}
case '/':{stack.push((one / two) + "");}
}
}
}
}
else
{
System.out.print("\ngoodbye");

System.exit(0);
}
}
}

抱歉没有评论,谢谢!

最佳答案

这是我的第一个解决方案,所以要温柔:D。问题不在于 pop(),因为 pop 正在做它应该做的事情。您忘记在 switch 语句中添加断点。它执行了所有操作并将其添加到堆栈中,给人一种 pop 不起作用的错觉。我将把打印部分留给你。干杯。

                switch(op)
{
case '+':
stack.push((one + two) + "");
break;
case '-':
stack.push((one - two) + "");
break;
case '*':
stack.push((one * two) + "");
break;
case '/':
stack.push((one / two) + "");
break;
}

关于java - pop()ing 堆栈似乎并没有删除这些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23600143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com