如果我手动将值推送到堆栈,Java,堆栈计算器工作正常,但如果我使用扫描器推送它们则不行

时间:2017-10-18 04:09:04

标签: java stack calculator

我必须使用一个计算器,逐个对数字进行加,减,乘和除,然后它将显示所有运算的结果。实施例。

输入:10 输入:+ 输入:10 输入:= 输出:10 + 10 = 20

我尝试通过手动推送数字和运算符来实现,并且它工作正常,仅用于添加和减去。 (这是代码)。

 public static void main(String[] args) {
    Stack<String> stack = new Stack();
    stack.push("10");
    stack.push("+");
    stack.push("10");
    stack.push("-");
    stack.push("20");
    stack.push("+");
    stack.push("1");
    stack.push("=");
    int result=0;
    int i;
    int result=0;
    for(i=0;i<stack.size();i++){
        if (stack.elementAt(i)== "+"){
           //does get in

我在第二个代码中检查了堆栈与第一个代码上的堆栈类似,它是类似的。由于某种原因,它不想通过if语句,即使它等于“+”或“ - ”。

Stack<String> stack = new Stack();
    Scanner sc = new Scanner(System.in);
    while(sc.hasNext()){
        String s1 = sc.next();
        stack.push(s1);
        if(s1.equals("=")) {
            break;
        }
    }
    int i;
    int result=0;
    for(i=0;i<stack.size();i++){
        System.out.print(stack.elementAt(i));
    }
    for(i=0;i<stack.size();i++){
        if (stack.elementAt(i)=="+"){
        //doesn't get in

1 个答案:

答案 0 :(得分:0)

您的代码存在问题

if (stack.elementAt(i)== "+")

堆栈采用String类型的争论。比较你应该使用

if(stack.elementAt(i).equals("+"))

同样,为&#34; - &#34;。

执行相同的操作