91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-09-30
  • 語言: Java
  • 標簽: Java??

資源簡介

Java實現計算數學表達式功能,能夠計算+ - * / % 以三角函數,冪函數,絕對值,以及含括號的混合運算 例如 輸入1+3*5+6/(4+7^3*sin30)這樣的表達式她能夠正確的算出來

資源截圖

代碼片段和文件信息

package?JExercise;

import?java.util.Stack;

public?class?Calculator??implements?MathSymbol{
public?double?eval(String?expression){
String?str?=?infix2Suffix(expression);
if(str?==?null)?{
????????????throw?new?IllegalArgumentException(“expression?is?null!“);
}
?String[]?strs?=?str.split(“\\s+“);
?Stack?stack?=?new?Stack();
?for(int?i?=?0;?i? ?if(!Operator.isOperator(strs[i]))?{
????????????????stack.push(strs[i]);
?}?else?{
?Operator?op?=?Operator.getInstance(strs[i]);
????????????????double?right?=?Double.parseDouble(stack.pop());
????????????????double?left?=?Double.parseDouble(stack.pop());
????????????????double?result?=?op.eval(left?right);
????????????????stack.push(String.valueOf(result));
?
?}
?}?
?return?Double.parseDouble(stack.pop());
}
public?String?infix2Suffix(String?expression){
if?(expression==null){return?null;}
char[]?chs=expression.toCharArray();

Stack??stack=new?Stack();
StringBuilder?sb?=new?StringBuilder(chs.length);
boolean?appendSeparator?=?false;
????????boolean?sign?=?true;
????????for(int?i=0;i ???????? char?c=?chs[i];
???????? if?(c==BLANK){
???????? continue;
???????? }
???????? ?if(appendSeparator)?{
????????????????//?sb.append(SEPARATOR);
???????? ?sb.append(SEPARATOR);
?????????????????appendSeparator?=?false;
?????????????}
???????? ?if(isSign(c)?&&?sign)?{
?????????????????sb.append(c);
?????????????????continue;
?????????????}
???????? ?if(isNumber(c))?{
?????????????????sign?=?false;
?????????????????sb.append(c);
?????????????????continue;
?????????????}??????????
???????? ?if(isLeftBracket(c))?{
?????????????????stack.push(c);
?????????????????continue;????????????????
?????????????}
???????? ??if(isRightBracket(c))?{
??????????????????sign?=?false;
??????????????????while(stack.peek()?!=?LEFT_BRACKET)?{???????//查看棧頂對象而不移除它
??????????????????????sb.append(SEPARATOR);
??????????????????????sb.append(stack.pop());
??????????????????}
??????????????????stack.pop();??????????????????????????????//移除棧頂對象并作為此函數的值返回該對象
??????????????????continue;
??????????????}
???????? ??appendSeparator?=?true;
???????? ??if(Operator.isOperator(c))?{
???????? ??sign?=?true;
??????????????????if(stack.isEmpty()?||?stack.peek()?==?LEFT_BRACKET)?{
??????????????????????stack.push(c);??//把項壓入棧頂
??????????????????????continue;
??????????????????}
??????????????????int?precedence?=?Operator.getPrority(c);
??????????????????while(!stack.isEmpty()?&&?Operator.getPrority(stack.peek())?>=?precedence)?{
??????????????????????sb.append(SEPARATOR);
??????????????????????sb.append(stack.pop());
??????????????????}
??????????????????stack.push(c);

???????? ??}
????????}
????????while?(!stack.isEmpty()){
???????? sb.append(SEPARATOR);
???????? sb.app

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3544??2010-06-23?19:42??JExercise\Calculator.java

?????文件???????7597??2010-07-02?21:51??JExercise\CalculatorF.java

?????文件????????595??2010-07-02?21:48??JExercise\MathSymbol.java

?????文件???????4299??2010-07-02?21:48??JExercise\Operator.java

?????目錄??????????0??2010-07-12?15:59??JExercise

-----------?---------??----------?-----??----

????????????????16035????????????????????5


評論

共有 條評論