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

📄 colonoperatortoken.java

📁 JAVA 数学程序库 提供常规的数值计算程序包
💻 JAVA
字号:
package jmathlib.core.tokens;

import jmathlib.core.interpreter.*;
import jmathlib.core.tokens.numbertokens.DoubleNumberToken;



/**Used to implement subscriptions of a array*/
public class ColonOperatorToken extends BinaryOperatorToken
{
	/**Default Constructor - creates an operator with the value set to ' '*/
    public ColonOperatorToken()
    {
        super();
        value = ' ';
    }

    /**evaluates the operator*/
    public OperandToken evaluate(Token[] operands)
    {

		double x1;      // minimum
		double x2;      // maximum
		double dx = 1;  // increment

        if (operands==null) return new Expression(new ColonOperatorToken());
        
		if ((operands.length < 2) || (operands.length >3)) 
            Errors.throwMathLibException("ColonOperator: <2 or >3 arguments");

		if ((operands[0]==null) || (operands[1]==null) )   
		    Errors.throwMathLibException("ColonOperator: argument 1 or 2 is null");

		if (  operands.length==2 && 
              (  (operands[0] instanceof DoubleNumberToken) &&
			     (operands[1] instanceof DelimiterToken) ) )  
            return new Expression(new ColonOperatorToken(), 
                                  (OperandToken)operands[0],
                                  (OperandToken)operands[1]);
            
        if (operands.length==3 && 
            (operands[0] instanceof DoubleNumberToken) &&
            (operands[1] instanceof DoubleNumberToken) &&
            (operands[2] instanceof DelimiterToken) )
        {
            OperandToken[] rettok = new OperandToken[3];
            rettok[0]= (OperandToken)operands[0];
            rettok[1]= (OperandToken)operands[1];
            rettok[2]= (OperandToken)operands[2];
            return new Expression(new ColonOperatorToken(), rettok, 3);
        }
 
		// get data from arguments
		if (operands.length==0)
        {
            return new Expression(new ColonOperatorToken());
        }
        else if (operands.length == 2)
		{
            if ( (!(operands[0] instanceof DoubleNumberToken)) ||
                 (!(operands[1] instanceof DoubleNumberToken))   )
                    Errors.throwMathLibException("ColonOperator: argument not number or end (x:x)");

			// e.g. 4:5
			x1 =      ((DoubleNumberToken)operands[0]).getReValues()[0][0];
			x2 =      ((DoubleNumberToken)operands[1]).getReValues()[0][0];		
		}
		else
		{
			if (operands[2] == null)                   return null;
            if ( (!(operands[0] instanceof DoubleNumberToken)) ||
                 (!(operands[1] instanceof DoubleNumberToken)) ||
                 (!(operands[2] instanceof DoubleNumberToken))   )
                       Errors.throwMathLibException("ColonOperator: argument not number or end (x:x:x)");

			// e.g. 4:2:20
			x1 =      ((DoubleNumberToken)operands[0]).getReValues()[0][0];
			dx =      ((DoubleNumberToken)operands[1]).getReValues()[0][0];
			x2 =      ((DoubleNumberToken)operands[2]).getReValues()[0][0];		
		}

		ErrorLogger.debugLine("ColonOperator: x1,dx,x2 "+ x1 +" "+ dx +" " +x2); 
		
        int n = (int) ( (x2-x1)/dx ) + 1;
		double[][] values = new double[1][n];
		for (int i=0; i<n ; i++)
		{
			values[0][i] = x1 +  ((double)i) * dx;
		}
		
		return new DoubleNumberToken(values);	

    }
    

    /**Convert the operator to a string*/
    public String toString()
    {
        return ":";
    }

    /**return a string containing the operator and it's operands*/
    /*public String toString(OperandToken[] operands)
    {
        if (operands==null) return ":";
        
        if (operands.length==2)
		{
			if ((operands[0]!=null) && (operands[1]!=null))
	            return operands[0].toString() + ":" + operands[1].toString();
		}
		else if (operands.length==3)
		{
			if ((operands[0]!=null) && 
				(operands[1]!=null) &&
				(operands[2]!=null)   )
	            return operands[0].toString() + ":" + 
                       operands[1].toString() + ":" +
					   operands[2].toString();
		}
        return ":";
    }*/
    
}

⌨️ 快捷键说明

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