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

📄 three.java

📁 输入一个表达式
💻 JAVA
字号:
class Three {
	public Three(String text) {
		sb = new StringBuffer();
		this.text = text;
		str = this.text.toCharArray();
		
		toBeSolute = str;
	}
	String getResult () {
		return sb.toString() ;
	}

	StringBuffer getStringBuffer() {
		return sb;
		
	}
	public static final int MAX = 100;
	
	StringBuffer sb;

	int m = 0, sum = 0;// sum用于计算运算符的个数

	// m用于标记输入表达式中字符的个数
	String text = new String("");

	char JG = 'a';

	char[] toBeSolute;

	char[] str = new char[MAX];// 用于存输入表达式

	int token = 0;// 左括号的标志

	/** *********用于更改计算后数组中的值************* */
	void change(int e) {

		int f = e + 2;
		char ch = str[f];
		if (ch >= 'A' && ch <= 'Z') {
			for (int l = 0; l < str.length; l++) {
				if (str[l] == ch)
					str[l] = JG;
			}
		}

		if (str[e] >= 'A' && str[e] <= 'Z') {
			for (int i = 0; i < m; i++) {
				if (str[i] == str[e])
					str[i] = JG;
			}
		}

	}

	void chengchuchuli(int i, int m) {

		i++;
		for (; i <= m - 1; i++)// 处理乘除运算
		{
			if (str[i] == '*' || str[i] == '/') {

				System.out.println("("+JG+")"+"(" + str[i] + "  " + str[i - 1] + "  "
						+ str[i + 1] + "  "+ ")");
				sb.append("("+JG+")"+"(" + str[i] + "  " + str[i - 1] + "  "
						+ str[i + 1] + "  " +  ")"+"\n");
				change(i - 1);
				str[i - 1] = str[i] = str[i + 1] = JG;
				sum--;
				JG++;
			}
		}
	}

	void jiajianchuli(int j, int m) {
		j++;
		for (; j <= m - 1; j++)// 处理加减运算
		{
			if (str[j] == '+' || str[j] == '-') {
				System.out.println("("+JG+")"+"(" + str[j] + "  " + str[j - 1] + "  "
						+ str[j + 1] + "  "  + ")");
				sb.append("("+JG+")"+"(" + str[j] + "  " + str[j - 1] + "  "
						+ str[j + 1] + "  "  + ")"+"\n");
				change(j - 1);
				str[j - 1] = str[j] = str[j + 1] = JG;
				sum--;
				JG++;
			}

		}
	}

	/* 扫描一遍从文件中读入表达式 */
	void scan() {
		int[] p = new int[MAX];
		char ch = 'a';
		int c = -1, q = 0;
		for (int i = 0; i < toBeSolute.length; i++) {
			
			ch = toBeSolute[i];

			str[m++] = ch;

			if (ch == '=' || ch == '+' || ch == '-' || ch == '*' || ch == '/')
				sum++;

			else if (ch == '(') {
				p[++c] = m - 1;

			} else if (ch == ')') {
				q = m - 1;
				chengchuchuli(p[c], q);// 从左括号处理到又括号
				jiajianchuli(p[c], q);
				JG--;
				str[p[c]] = str[m - 1] = JG;
				c--;
				JG++;

			}
		}
	}

	/* 对表达是进行处理并输出部分四元式 */
	void siyuanshi() {

		for (int i = 0; i <= m - 1; i++)// 处理乘除运算
		{
			if (str[i] == '*' || str[i] == '/') {

				System.out.println("("+JG+")"+"(" + str[i] + "  " + str[i - 1] + "  "
						+ str[i + 1] + "  "  + ")");
				sb.append("("+JG+")"+"(" + str[i] + "  " + str[i - 1] + "  "
						+ str[i + 1] + "  "  + ")"+"\n");
				change(i - 1);
				str[i - 1] = str[i] = str[i + 1] = JG;
				sum--;
				JG++;
			}

		}

		for (int j = 0; j <= m - 1; j++)// 处理加减运算
		{
			if (str[j] == '+' || str[j] == '-') {

				System.out.println("("+JG+")"+"(" + str[j] + "  " + str[j - 1] + "  "
						+ str[j + 1] + "  "  + ")");
				sb.append("("+JG+")"+"(" + str[j] + "  " + str[j - 1] + "  "
						+ str[j + 1] + "  "  + ")"+"\n");
				change(j - 1);
				str[j - 1] = str[j] = str[j + 1] = JG;
				sum--;
				JG++;
			}

		}

		for (int k = 0; k <= m - 1; k++)// 处理赋值运算
		{
			if (str[k] == '=') {

				--JG;
				System.out.println("("+JG+")"+"(" + str[k] + "  " + str[k + 1] + "  "
						+ "  " + " " + str[k - 1] + ")");
				sb.append("("+JG+")"+"(" + str[k] + "  " + str[k + 1] + "  "
						+ "  " + " " + str[k - 1] + ")"+"\n");
				sum--;
				change(k + 1);
				str[k - 1] = JG;
			}
		}

	}

	/** *************主函数****************** */
	void solute() {

		System.out.println("四元式如下:");

		scan();// 调用函数从文件中读入表达式

		/** ******调用生成四元式的函数******* */
		siyuanshi();

		/** *******判断是否成功********* */
		if (sum == 0) {
			
			System.out.println("成功!");
			sb.append("成功");
		}
		else
		{
			System.out.println("有错误!");
		    sb.append("失败");
		}
		// 关闭文件

	}
	public static void main (String [] args) {
		Three t = new Three("a+b*c+(9+5)");
	    t.solute();
	//	System.out.println(t.getResult());
}
	
}

⌨️ 快捷键说明

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