⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caculaterengine.java

📁 caculater in the ssd any...asdf sadf
💻 JAVA
字号:
package bluewater;

public class CaculaterEngine {

	CaculaterEngine() {
	}

	public static int signNumber(char z) {
		int t = 0;
		if (z == '+')
			t = 1;
		if (z == '-')
			t = 1;
		if (z == '*')
			t = 2;
		if (z == '/')
			t = 2;
		if (z == '^')
			t = 3;
		if (z == '(')
			t = 0;
		if (z == ')')
			t = 0;
		return t;
	}

	public static double compute(double x, double y, char z) {
		int t = 0;
		if (z == '+')
			t = 1;
		if (z == '-')
			t = 2;
		if (z == '*')
			t = 3;
		if (z == '/')
			t = 4;
		if (z == '^')
			t = 5;
		switch (t) {
		case 1:
			return x + y;
		case 2:
			return x - y;
		case 3:
			return x * y;
		case 4:
			return x / y;
		case 5:
			double k = x;
			for (int i = 1; i < (int) y; i++)
				k *= x;
			return k;
		}
		return 0;
	}

	public int deepNumber(char x) {
		if (x == '+' || x == '-')
			return 1;
		if (x == '*' || x == '/')
			return 2;
		if (x == '^')
			return 3;
		return 0;
	}

	public double makeAnswer(String z) {
		Strack a = new Strack(z);

		for (a.now = 0; a.now < z.length(); a.now++) {
			// push number
			if (a.nextIsNumber())
				a.pushNumber(a.giveMeNumber());
			else {
				// push sign
				a.pushSign(a.point.charAt(a.now));
				if (a.signStrack[a.sign] == ')') {
					a.upSign();
					while (a.signStrack[a.sign] != '(') {
						a.numberStrack[a.number - 1] = compute(
								a.numberStrack[a.number - 1],
								a.numberStrack[a.number], a.signStrack[a.sign]);
						a.upNumber();
						a.upSign();
					}
					a.upSign();
				}
				if (a.sign==0) continue;
				char c1 = a.signStrack[a.sign];
				char c2 = a.signStrack[a.sign - 1];
				if ((signNumber(c1) <= signNumber(c2))
						&& (a.point.charAt(a.now) != '(')) {
					a.numberStrack[a.number - 1] = compute(
							a.numberStrack[a.number - 1],
							a.numberStrack[a.number], c2);
					a.signStrack[a.sign - 1] = c1;
					a.upNumber();
					a.upSign();
				}
			}
		}
		int t = a.number;
		for (int i = 1; i < t; i++) {
			char c1 = a.signStrack[a.sign];
			a.numberStrack[a.number - 1] = compute(
					a.numberStrack[a.number - 1], a.numberStrack[a.number], c1);
			a.upNumber();
			a.upSign();
		}
		return a.numberStrack[1];
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -