exprparser.java

来自「大量jsp编程使用例子」· Java 代码 · 共 68 行

JAVA
68
字号
  package cal;

  import java.lang.* ;
  import cal.* ;
  
  public class ExprParser {
    String  answer ;
    
    public ExprParser() {
      this.answer=null ;
    }
    
    protected double calculate( double firstElement, String operator, double secondElement ) 
    throws Exception {
      if( "+".equals( operator ) )
      	return firstElement+secondElement ;
      else if( "-".equals( operator ) )
        return firstElement-secondElement ;
      else if( "*".equals( operator ) )
        return firstElement*secondElement ;
      else if( "/".equals( operator ) ) {
        if( secondElement>-1E-5 && secondElement<1E-5 )
          throw new Exception() ;
        else
          return firstElement/secondElement ;
      }
      else
        return firstElement ;
    }
    
    public String getAnswer() {
      if( this.answer==null )
        return "输入的算术式有错误!" ;
      else
        return this.answer  ;	
    }
    
    public void setTokensList( ExprTokensList tokenList ) {
      double result=0.0 ;
      
      Object element=tokenList.getElement() ;
      if( element!=null ) {
      	if( element instanceof Double )
      	  result=((Double)element).doubleValue() ;
      	else
      	  return ;
 
      	while( ( element=tokenList.getElement() )!=null ) {
      	  String opr="" ;
	  if( element instanceof String )
	    opr=(String)element ;
	  else
	    return ;	
	  
	  if( ( element=tokenList.getElement() )!=null && element instanceof Double )
	    try {
	      result=this.calculate( result, opr, ((Double)element).doubleValue() ) ;
	    }
	    catch( Exception ex ) {
	      return ;	
	    }
	  else
	    return ;
      	}
      }
      this.answer=String.valueOf( result ) ;
    }
  }

⌨️ 快捷键说明

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