逆波兰数Java实现

java

定义^ 自增

* 乘法

+ 加法

栈长度16 超过 上溢出 返回-2  若栈中没有足够的整数供运算 则返回-1 否则返回栈顶

package ali0426;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

import java.util.Stack;

public class Main {

public static void main(String[] args) {

ArrayList<Integer> inputs = new ArrayList<Integer>();

Scanner in = new Scanner(System.in);

String line = in.nextLine();

if(line != null && !line.isEmpty()) {

int res = resolve(line.trim());

System.out.println(String.valueOf(res));

}

}

// write your code here

public static int resolve(String expr) {

String str [] = expr.split(" ");

Stack<Integer> sta = new Stack<>();

int temp1,temp2;

//char [] ch = expr.toCharArray();

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

String c = str[i];

if(sta.size()>16) return -2; //上溢出

if(c.equals("^")){

if(sta.size()==0) return -1;

else{

temp1 = sta.pop();

temp1++;

sta.push(temp1);

}

}

else if(c.equals("+")){

if(sta.size()<2) return -1;

else{

temp1 =sta.pop();

temp2 = sta.pop();

sta.push(temp1+temp2);

}

}

else if(c.equals("*")){

if(sta.size()<2) return -1;

else{

temp1 =sta.pop();

temp2 =sta.pop();

sta.push(temp1*temp2);

}

}

else if(c.equals(" ")) continue;//处理空格

else{

sta.add(Integer.parseInt(c));

}

}

return sta.peek();

}

}

  

以上是 逆波兰数Java实现 的全部内容, 来源链接: utcz.com/z/393558.html

回到顶部