【算法】波兰表达式

Java输入字符串时next()和nextLine()的区别:

1.next()是在输入的一行中,到第一个空格为止,作为本次要输入的字符串,比如我可能输入“I am a girl.”,其实只会存储“I”;

2.nextLine()是在输入的一行中,到回车为止,作为本次输入的字符串(包括空格);

波兰表达式:

样例输入:* + 11.0 12.0 + 24.0 35.0

样例输出:1357.000000

import java.util.*;
public class Main 
{	
	//定义一个数组进行存储
	static String[] arr;
	static int i = -1;
	//进行判断
		private static double exp() {
			i++;
			switch (arr[i]) {
			case "+":
				return exp() + exp();
			case "-":
				return exp() - exp();
			case "*":
				return exp() * exp();
			case "/":
				return exp() / exp();
			default:
				return Double.parseDouble(arr[i]);
			}
		}

	//测试代码
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		Main m = new Main();
		String str1 = sc.nextLine();
		 arr = str1.split(" ");
		//输出答案
		System.out.println(m.exp());
	}
}

递归的话 可以参考下面的图便于理解:

猜你喜欢

转载自blog.csdn.net/kevin_nan/article/details/87888191
今日推荐