亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? expressionanalyze.java

?? 一個(gè)關(guān)于公式分析得java小程序
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//ExpressionsAnalyze.java - 計(jì)算公式分析
/*
關(guān)于與用法的例子如下:
String expression = "num1 * num2 -num3/num1";
try{
 	ExpressionAnalyze analyze = new ExpressionAnalyze(expression,12,10,6);
	catch(Exception e){
	System.out.println(e.toString());
}
double temp = analyze.getResult();
System.out.println(temp);

需要注意的問題:
	1.	一定要用try----catch語句;
	2.	目前構(gòu)造函數(shù)可以有四種情況:
		a.	只有一個(gè)參數(shù),用于接收公式,如  ExpressionAnalyze("abs(36-56)+90");
		b.	兩個(gè)參數(shù),第一個(gè)用于接收公式,第二個(gè)用于接收傳值參數(shù)的值,
			如  ExpressionAnalyze("cos(num)+45",926);
		c.	三個(gè)參數(shù),第一個(gè)用于接收公式,另外兩個(gè)用于接收傳值參數(shù)的值,
			如ExpressionAnalyze("cos(num)+flag",26,36);
		d.	四個(gè)參數(shù),第一個(gè)用于接收公式,另外三個(gè)用于接收傳值參數(shù)的值,
			如ExpressionAnalyze("cos(num)+num1*num2",6,10,32);
	3.	所有的輸入值和返回值均用double類型以提高精度;
	4.	公式中可以包含空格,ExpressionAnalyze 中包含有處理空格的 method 清除其中的空格;
	5.	目前支持的運(yùn)算符包括 +   -   *   /   (   )   %(求余數(shù))  abs(求絕對(duì)值) 
		acos(反余弦) asin(反正弦) atan(反正切)  cbrt(開立方) 
		ceil(求比被操作數(shù)大的最小整數(shù)) cos(余弦) cosh(雙曲余弦函數(shù)) 
		exp(求ex ) floor(求比操作數(shù)小的最大整數(shù)) expm1(返回ex -1) 
		log(求以e為底的對(duì)數(shù)) log10(求以10為底的對(duì)數(shù)) log1p(返回1和被操作數(shù)和的自然對(duì)數(shù)) 
		rint(返回和被操作數(shù)最接近的整數(shù)的double形式) round(四舍五入,返回long) 
		signum(正負(fù)號(hào)函數(shù)) sin(正弦函數(shù)) sinh(雙曲正弦) sqrt(開平方) 
		tan(正切) tanh(雙曲正切) toDegrees(將弧度轉(zhuǎn)化為角度) 
		toRadians(將角度轉(zhuǎn)化為弧度)共 31 種,并且括號(hào)可以嵌套使用。
		各種運(yùn)算符的意義:
	6.	負(fù)號(hào)"-"也可以正常使用,不過在使用中被操作數(shù)要加括號(hào),如  (-5);
		但是公式開頭的符號(hào)可以不帶括號(hào),如 expression = "-cos(PI)+E";
	7.	目前支持的常量包括:
		a.	自然對(duì)數(shù)的底 "e",所用的符號(hào)為 "E"
		b.	圓周率 "∏" ,所用的符號(hào)為 "PI"用法如  expression = "5 + cos (PI)";
	8.	公式中也支持科學(xué)技術(shù)法,如 12.3e6  或者 12.3E6
*/

package ddpie.expressionanalyze;
public class ExpressionAnalyze {
	//接受一個(gè)表達(dá)式參數(shù)的構(gòu)造函數(shù)
	public ExpressionAnalyze(String expr) throws Exception{
		this.expr = expr;
		numOfParameter = 0;
		try{
			clearBlank();
			seekOutElem();
			compute();	
		}
		catch (Exception e){
			throw new Exception(e.toString());
		}
	}
	//接受一個(gè)表達(dá)式參數(shù)、一個(gè)傳值參數(shù)的構(gòu)造函數(shù)
	public ExpressionAnalyze(String expr,double value1) throws Exception{
		this.expr = expr;
		numOfParameter = 1;
		this.value1 = value1;
		try{
			clearBlank();
			seekOutElem();	
			compute();
		}
		catch (Exception e){
			throw new Exception(e.toString());
		}
	}
	//接受一個(gè)表達(dá)式參數(shù)、兩個(gè)傳值參數(shù)的構(gòu)造函數(shù)
	public ExpressionAnalyze(String expr,double value1,double value2)
	  throws Exception
	{
		this.expr = expr;
		numOfParameter = 2;
		this.value1 = value1;
		this.value2 = value2;
		try{
			clearBlank();
			seekOutElem();
			compute();
		}
		catch (Exception e){
			throw new Exception(e.toString());
		}
	}
	//接受一個(gè)表達(dá)式參數(shù)、三個(gè)傳值參數(shù)的構(gòu)造函數(shù)
	public ExpressionAnalyze(String expr,double value1,double value2,double value3)
	  throws Exception
	{
		this.expr = expr;
		numOfParameter = 3;
		this.value1 = value1;
		this.value2 = value2;
		this.value3 = value3;
		try{
			clearBlank();
			seekOutElem();
			compute();
		}
		catch (Exception e){
			throw new Exception(e.toString());
		}
	}
	//清除expr中的空格
	private void clearBlank() throws Exception{
		//清除expr末尾的空格
		expr = expr.trim();
		char [] exprArray = new char[expr.length()];
		//將expr中的元素復(fù)制到數(shù)組exprArray中
		for(int i = expr.length()-1;i >= 0;i--)
			exprArray[i] = expr.charAt(i);
		//逐個(gè)將空格清除
		for(int i = expr.length()-1;i >= 0;i--){
			int j;
			if(exprArray[i] ==' '){
				j = i;
				while(j < exprArray.length - 1){
					exprArray[j] = exprArray[j + 1];
					j++;	
				}
				exprArray[exprArray.length - 1] = ' ';
			}
		}
		//將數(shù)組形式轉(zhuǎn)換成StringBuffer形式
		StringBuffer exprStrBuf = new StringBuffer("");
		for(int i = 0;i < exprArray.length;i++){
			exprStrBuf.insert(i,exprArray[i]);	
		}
		//將StringBuffer形式轉(zhuǎn)換成String形式
		expr = exprStrBuf.toString().trim();
		if(expr.length() == 0)
			throw new Exception("the length of the expression is 0");
	}
	//將字符串中的變量、常量、運(yùn)算符挑出
	private void seekOutElem() throws Exception{
		int minLocation;
		int startPoint = 0;
		boolean isKeyword;
		do{
			minLocation = expr.length();
			isKeyword = false;
			for(int i = 0;i < keywords.length;i++) {
				int kwdLocation = expr.substring(startPoint).indexOf(keywords[i]);
				if(kwdLocation == -1)
					kwdLocation = expr.length();
				else 
					kwdLocation += startPoint;
				//如果是運(yùn)算符
				if(kwdLocation == startPoint && 
				  	(keywords[i].equals("(") || 
				  	 keywords[i].length() == 1 ||
			   		 expr.charAt(startPoint + keywords[i].length()) == '('
				   	)
				  )
				{
					//如果鏈表為空
					if(elemList == null){
						elemList = new ElemList (keywords[i]);
						current = elemList;
						current.isOperator = true;	
					}
					//如果鏈表不空
					else{
						current.next = new ElemList (keywords[i]);
						current = current.next;
						current.isOperator = true;	
					}
					isKeyword = true;
					break;
				}
				if(minLocation > kwdLocation)
					minLocation = kwdLocation;
			}
			//如果不是運(yùn)算符
			if(!isKeyword){
				//如果鏈表為空
				if(elemList == null){
					elemList = new ElemList (expr.substring(startPoint,minLocation));
					current = elemList;	
					current.isOperator = false;
				}
				//如果鏈表不空
				else{
					current.next = new ElemList (expr.substring(startPoint,minLocation));	
					current = current.next;
					current.isOperator = false;
				}
			}
			startPoint += current.data.length();
		}while(startPoint < expr.length());
		//公式末尾添加"#"
		current.next = new ElemList ("#");
		current = current.next;
		current.isOperator = true;
	}
	//計(jì)算最終的結(jié)果
	private void compute() throws Exception{
		//處理公式開頭的負(fù)號(hào)
		if(elemList.data.equals("-")){
			ElemList temp = new ElemList ("0");
			temp.next = elemList;
			elemList = temp;
		}
		for(current = elemList;current.next != null;current = current.next){
			//處理負(fù)號(hào)
			if(current.data.equals("(") && current.next.data.equals("-")){
				ElemList temp = new ElemList ("0");
				temp.next = current.next;
				current.next = temp;
			}
			//處理常量自然對(duì)數(shù)的底 e
			else if(current.data.equals("E"))
				current.data = (new Double(Math.E)).toString();
			//處理常量圓周率
			else if(current.data.equals("PI"))
				current.data = (new Double(Math.PI)).toString();
		}
		//找出公式中的變量,并對(duì)其恰當(dāng)?shù)馁x值
		boolean findFirst = false , findSecond = false,findThird = false;
		switch(numOfParameter){
			case 0 :
				for(current = elemList;current != null;current = current.next)
					if(!current.isOperator){
						//強(qiáng)制類型轉(zhuǎn)換,若轉(zhuǎn)換不成功則說明是變量
						try{
							Double.parseDouble(current.data);	
						}
						catch (NumberFormatException e){
							throw new Exception ("the variable '" + current.data 
													+ "' needs a value");
						}
					}
					break;
			case 1 :
				for(current = elemList;current != null;current = current.next)
					if(!current.isOperator){
						//強(qiáng)制類型轉(zhuǎn)換,若轉(zhuǎn)換不成功則說明是變量
						try{
							Double.parseDouble(current.data);	
						}
						catch (NumberFormatException e){
							findFirst = true;
							firstStr = new String(current.data);
							firstDou = value1;
							break;
						}
					}
				if(!findFirst)
					throw new Exception ("there is no variable,the value '" + value1
											+"' is not needed");
				break;
			case 2 :
				for(current = elemList;current != null;current = current.next)
					if(!current.isOperator){
						//強(qiáng)制類型轉(zhuǎn)換,若轉(zhuǎn)換不成功則說明是變量
						try{
							Double.parseDouble(current.data);	
						}
						catch (NumberFormatException e){
							findFirst = true;
							firstStr = new String(current.data);
							firstDou = value1;
							break;
						}
						
					}
				if(!findFirst)
					throw new Exception ("there is no variable,the value '" + value1
											+"' is not needed");
				for(;current != null;current = current.next)
					if(!current.isOperator && !current.data.equals(firstStr)){
						//強(qiáng)制類型轉(zhuǎn)換,若轉(zhuǎn)換不成功則說明是變量
						try{
							Double.parseDouble(current.data);	
						}
						catch (NumberFormatException e){
							findSecond = true;
							secondStr = new String(current.data);
							secondDou = value2;
							break;
						}
						
					}
				if(!findSecond)
					throw new Exception ("there are not so much variables,the value '"
											+ value2 + "' is not needed");
				break;
			case 3 :
				for(current = elemList;current != null;current = current.next)
					if(!current.isOperator){
						//強(qiáng)制類型轉(zhuǎn)換,若轉(zhuǎn)換不成功則說明是變量
						try{
							Double.parseDouble(current.data);	
						}
						catch (NumberFormatException e){
							findFirst = true;
							firstStr = new String(current.data);
							firstDou = value1;
							break;
						}
						
					}
				if(!findFirst)
					throw new Exception ("there is no variable,the value '" + value1
											+"' is not needed");
				for(;current != null;current = current.next)
					if(!current.isOperator && !current.data.equals(firstStr)){
						//強(qiáng)制類型轉(zhuǎn)換,若轉(zhuǎn)換不成功則說明是變量
						try{
							Double.parseDouble(current.data);	
						}
						catch (NumberFormatException e){
							findSecond = true;
							secondStr = new String(current.data);
							secondDou = value2;
							break;
						}
						
					}
				if(!findSecond)
					throw new Exception ("there are not so much variables,the value '"
											+ value2 + "' is not needed");
				for(;current != null;current = current.next)
					if(!current.isOperator && !current.data.equals(firstStr) 
						&& !current.data.equals(secondStr)){
						//強(qiáng)制類型轉(zhuǎn)換,若轉(zhuǎn)換不成功則說明是變量
						try{
							Double.parseDouble(current.data);	
						}
						catch (NumberFormatException e){
							findThird = true;
							thirdStr = new String(current.data);
							thirdDou = value3;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人自拍偷拍| 成人av在线电影| caoporm超碰国产精品| 欧美男人的天堂一二区| 精品福利一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲在线中文字幕| 国产精品77777| 欧美日韩黄视频| 中文字幕制服丝袜一区二区三区 | 欧美精品一区二区精品网| 亚洲欧洲日韩女同| 麻豆freexxxx性91精品| 色欧美日韩亚洲| 国产日韩精品一区| 日本欧美在线看| 91啪亚洲精品| 国产亚洲精久久久久久| 日韩av一级电影| 色一区在线观看| 亚洲国产精品国自产拍av| 免费精品视频在线| 欧美亚男人的天堂| 国产精品福利av| 国产久卡久卡久卡久卡视频精品| 欧美日韩一区小说| 亚洲天堂福利av| 国产美女娇喘av呻吟久久| 欧美日韩三级视频| 亚洲精品视频一区二区| 成人免费黄色大片| 久久亚洲综合av| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲成人综合视频| 成人黄动漫网站免费app| 欧美成人官网二区| 日韩中文字幕1| 欧美制服丝袜第一页| 中文字幕一区在线观看| 国产精品一区二区在线播放| 日韩欧美国产午夜精品| 午夜精品福利一区二区三区蜜桃| 91美女蜜桃在线| 国产精品国模大尺度视频| 国产精品911| 国产三级三级三级精品8ⅰ区| 麻豆国产精品777777在线| 69堂精品视频| 日日摸夜夜添夜夜添国产精品| 色八戒一区二区三区| 亚洲免费在线视频| 91浏览器入口在线观看| 最新热久久免费视频| 成人一区二区三区视频在线观看 | 国产成人av影院| 精品国产露脸精彩对白| 精品在线免费视频| 精品国内片67194| 老司机免费视频一区二区 | 粉嫩aⅴ一区二区三区四区| 2021国产精品久久精品| 国内精品国产成人国产三级粉色| 日韩精品一区二区三区在线播放| 日本女人一区二区三区| 91精品国产综合久久久久久久久久| 五月综合激情婷婷六月色窝| 一本色道a无线码一区v| 国产精品电影一区二区三区| hitomi一区二区三区精品| 成人欧美一区二区三区小说| 99riav一区二区三区| 亚洲免费观看高清| 欧美性色欧美a在线播放| 亚洲va韩国va欧美va| 精品av综合导航| 91网站在线播放| 欧美唯美清纯偷拍| 国产精品女主播在线观看| aa级大片欧美| 夜夜嗨av一区二区三区四季av| 欧美性生活大片视频| 麻豆精品视频在线观看| 国产丝袜欧美中文另类| 色综合天天综合网天天狠天天| 亚洲国产综合91精品麻豆| 欧美一区二区三区爱爱| 国产一区二区三区日韩| 国产精品污污网站在线观看| 色偷偷久久人人79超碰人人澡| 天堂蜜桃91精品| 久久免费视频色| 91视频www| 日韩国产欧美三级| 国产日韩高清在线| 一本大道av伊人久久综合| 午夜婷婷国产麻豆精品| 久久久久久久综合色一本| 91浏览器入口在线观看| 日韩高清在线电影| 国产欧美日韩精品在线| 欧美在线视频日韩| 国产真实乱对白精彩久久| 亚洲欧美日韩精品久久久久| 91麻豆精品国产自产在线观看一区 | 欧美日韩在线不卡| 久久精品72免费观看| 国产精品久久久久9999吃药| 欧美三片在线视频观看| 国产麻豆成人精品| 亚洲精品成人悠悠色影视| 欧美一区二区三区视频在线 | 日韩欧美视频在线| 成人av资源在线观看| 性感美女极品91精品| 久久久三级国产网站| 一本色道**综合亚洲精品蜜桃冫| 美女视频网站黄色亚洲| 国产精品久久久久影院| 6080午夜不卡| 成人av在线资源| 美女视频黄 久久| 亚洲免费观看高清在线观看| 日韩精品资源二区在线| 91老师国产黑色丝袜在线| 国产一区二区在线电影| 亚洲电影欧美电影有声小说| 欧美激情资源网| 日韩手机在线导航| 91极品视觉盛宴| 国产精品一区二区三区乱码| 亚洲电影激情视频网站| 精品国产91亚洲一区二区三区婷婷| 色婷婷综合久久久中文一区二区 | 国产精品一二三四五| 亚洲精品v日韩精品| 日韩欧美一级片| 欧美综合视频在线观看| 福利视频网站一区二区三区| 日韩和欧美的一区| 亚洲免费色视频| 中文字幕不卡在线观看| 久久久夜色精品亚洲| 日韩美女主播在线视频一区二区三区| 欧美日韩国产系列| 欧美日韩免费电影| 欧美日韩成人一区| 欧美三级视频在线| 在线观看免费一区| 在线观看一区日韩| 91在线观看视频| 99久久精品免费观看| 国产99久久久国产精品潘金网站| 老汉av免费一区二区三区| 五月婷婷激情综合| 一区二区三区高清在线| 久久只精品国产| 日韩手机在线导航| 欧美日韩一区视频| proumb性欧美在线观看| 国内欧美视频一区二区| 日韩电影在线观看网站| 亚洲欧美另类久久久精品2019| 国产调教视频一区| 久久精品视频网| 久久先锋影音av鲁色资源网| 日韩欧美在线一区二区三区| 7777精品伊人久久久大香线蕉 | 成人激情黄色小说| 粉嫩av一区二区三区| 国产麻豆视频一区二区| 视频一区欧美日韩| 日韩一区精品视频| 日本91福利区| 日本少妇一区二区| 奇米四色…亚洲| 国精产品一区一区三区mba视频| 国产精品一级片| 91在线播放网址| 欧美日韩精品一区二区三区| 欧美疯狂性受xxxxx喷水图片| 337p亚洲精品色噜噜| 91精品国产免费| 欧美电影免费观看高清完整版在线观看| 欧美一级二级三级蜜桃| 欧美本精品男人aⅴ天堂| 精品福利一区二区三区| 久久精品在线免费观看| 国产精品视频免费| **网站欧美大片在线观看| 悠悠色在线精品| 亚洲一区在线观看免费观看电影高清| 亚洲综合成人在线视频| 性做久久久久久| 美女一区二区视频| 国产精品自拍av| 欧美视频精品在线观看| 精品久久久久香蕉网| 综合久久久久综合| 日韩和欧美的一区| 不卡一区在线观看|