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

📄 analyze.java

📁 womendoushou woh eou ewoeuwomen wone n
💻 JAVA
字号:
/*
 * Created on 2006-9-10
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

package calculator;

import java.util.LinkedList;
import java.util.ListIterator;
import java.util.StringTokenizer;


/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Analyze {


	public static Analyze analyze;
	
	String inf, bufferNumber = null;

	LinkedList list = new LinkedList();
	
	ListIterator iter;

	public Analyze(String str) {
		inf = str;
	}

	public boolean statrtParse() {
		
		StringBuffer makeContent = new StringBuffer();
		StringTokenizer strToken = new StringTokenizer(inf);
		while (strToken.hasMoreTokens()) {
			makeContent.append(strToken.nextToken());
		}
		if(makeContent.length()==0) {
			return false;
		}
		char infChar[] = makeContent.toString().toCharArray();

		int length = infChar.length;
		for (int j = 0; j < length; j++) {
			if(!check(infChar[j])) {
				return false;
			}
			
		}
		if(bufferNumber != null) {
			double dou = 0;
			try{
				dou = Double.parseDouble(bufferNumber);
			} catch(Exception e) {
				return false;
			}
			bufferNumber = null;
			Formula f = new Formula(dou);
			list.add(f);
		}


		list.addLast(new Operator('+'));
		list.addLast(new Formula(0));
		list.addLast(new Bracket(')'));
		iter = list.listIterator();
		return true;
	}

	boolean check(char ch) {
		switch (ch) {
		case '.':
			if (bufferNumber == null) {
				return false;
			}
		case '0':
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9':
			if(bufferNumber != null) {
				bufferNumber = bufferNumber + ch;
			} else bufferNumber = "" + ch;
			return true;
			
		case '+':
		case '-':
		case '×':
		case '*':
		case '/':
		case '÷':
			if(bufferNumber != null) {
				double dou = 0;
				try{
					dou = Double.parseDouble(bufferNumber);
				} catch(Exception e) {
					findBug();
				}
				bufferNumber = null;
				Formula f = new Formula(dou);
				list.add(f);
			}
			Operator oper = new Operator(ch);
			list.add(oper);
			return true;

		case '(':
		case ')':
		case '(':
		case ')':
			if(bufferNumber != null) {
				double dou = 0;
				try{
					dou = Double.parseDouble(bufferNumber);
				} catch(Exception e) {
					findBug();
				}
				bufferNumber = null;
				Formula f = new Formula(dou);
				list.add(f);
			}
			list.add(new Bracket(ch));
			return true;
		}
		return false;
	}

	private void findBug() {}

	public Object nextElement() {
		Object obj = iter.next();
		return obj;
	}
	
	public Object previousElement() {
		Object obj = iter.previous();
		return obj;
	}
	
	public boolean hasNext() {
		return iter.hasNext();
	}
	
	public String toString() {

		String str = "";
		while( hasNext()) {
			Object obj = nextElement();

			str = str + obj.toString();
		}
		return str;
	}
}

⌨️ 快捷键说明

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