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

📄 expression.java

📁 同学的一个java 程序
💻 JAVA
字号:
package midLanguage;

import java.util.*;
	
public class expression{
		operator[] op;
		Stack A;
		Stack B;
		String source; //原算式
		public expression(){
		op = new operator[5];
	        op[0] = new operator('@',0);
		op[1] = new operator('+',0); 
		op[2] = new operator('-',0); 
		op[3] = new operator('*',1); 
		op[4] = new operator('/',1);

		A = new Stack();
		B = new Stack();
		B.push(new Character('@'));
		}

		public int indexOf(Character ch){
			int i=0,result = -1;
			for(i=0;i<op.length;i++){
				if(op[i].oper == ch.charValue()){
					result = i;
					break;
					}
			}
			return result;
		}

		public int indexOf(char ch){
			int i=0,result = -1;
			for(i=0;i<op.length;i++){
				if(op[i].oper == ch){
					result = i;
					break;
					}
			}
			return result;
		}


		public void formLanguage(int loop){
			A.push(B.pop());
		}

		public void getLanguage(String source){
		char[] source_Array = source.toCharArray();			//原算式字符数组
		int pointer = 0;
		int index;
		int loop=1;   //纪录调用formLanguage()方法次数
		while(!(((Character)B.peek()).charValue()=='@'&& source_Array[pointer]=='#'))
		{
			index = indexOf((Character)B.peek());
			if(index !=-1)
			{  //操作符
				if(index == 0){//@
					if(Character.isLetter(source_Array[pointer])){
						A.push(new Character(source_Array[pointer]));
						pointer++;
						}
					else if(source_Array[pointer] == '('){
						B.push(new Character('@'));
						pointer++;
						}
					else if(indexOf(source_Array[pointer])!=-1){
						B.push(new Character(source_Array[pointer]));
						pointer++;
						}
					else if(source_Array[pointer] == ')'){
						B.pop();
						pointer++;
						}
					else{
						System.out.println("error input!");
						break;
						}
				}
				else{
					int index2 = indexOf(source_Array[pointer]);
					if(Character.isLetter(source_Array[pointer])){
						A.push(new Character(source_Array[pointer]));
						pointer++;
						}
					else if(source_Array[pointer] == '('){
						B.push(new Character('@'));
						pointer++;
						}
					else if(index2!=-1){
						int result = operator.cmp(op[index],op[index2]);
						if(result==1){
							formLanguage(loop);
							loop++;
							//push(B.pop());
						}
						else if(result == 0){
							B.push(new Character(source_Array[pointer]));
							pointer++;
						}
						else{
							System.out.println("error state!");
							break;
							}
						}
					      
					else if(source_Array[pointer] == ')'){
						formLanguage(loop);
						loop++;
						//A.push(B.pop());
						}
					else if(source_Array[pointer] == '#'){
						formLanguage(loop);
						loop++;
						//A.push(B.pop());
						}
					else{
						System.out.println("error state!");
						break;
					}
				}
			}
			else{
				System.out.println("error state!");
				break;
			}
		}  //end of while
			print();
	}
	
	public void print(){
		Stack temp_stack = new Stack();
		int temp = A.size();
		for(int p=0;p<temp;p++)
			temp_stack.push(A.pop());
	        for(int q=0;q<temp;q++)
	        	System.out.print(((Character)temp_stack.pop()).charValue());}
		
}//end of class nbl

⌨️ 快捷键说明

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