• 大小: 530KB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: Java
  • 标签: JavaFx  

资源简介

做Java课程设计时做的一个项目,基本功能如下: 1、能输入算术表达式,表达式用的是数学符号表示,不是计算机专业符合,如乘是符合“X”,而不是“*”; 2、能保存和浏览计算记录,并能选择某条记录重新计算; 3、能修改输入的表达式; 4、按等号计算; 5、能计算+、-,X,/, 乘方、开方,对数等多种计算; 顺便附带课程设计报告,注意用的开发包为Java1.8_101。由于调用的用于计算的数学函数的关系,只能在Java1.8_101及其以下版本的jfk下运行。jdk1.8的2版本会出现调用函数错误的情况,更别说不兼容的javajdk9及其以上版本了。

资源截图

代码片段和文件信息

package sample;

import java.math.BigDecimal;
import java.math.RoundingMode;
import javax.script.scriptEngine;
import javax.script.scriptEngineManager;
import javax.script.scriptException;

/**
 * Analysis class
 *
 * @author 康勤
 * @data 2019/07/08
 */
public class Analysis{

    private String analysisObj;
// private String operatorChar[] = {“+““-““ד“÷““^““√““log““%“};
    /**
     * 运算符
     * private char[] operator= {‘+‘‘-‘‘*‘‘/‘‘^‘‘v‘‘l‘};
     * @下标0 + 加
     * @下标1 - 减
     * @下标2 * 乘
     * @下标3 / 除
     * @下标4 ^ 幂
     * @下标5 v 开方
     * @下标6 l 对数
     * @下标7 % 百分比
     */

    public Analysis(String analysisObj)
    {
        this.analysisObj = analysisObj;

    }

    private boolean isComplete(int[] count)
    {
        return count[0]+count[1]+count[2]+count[3]!=4;
    }

    private void AnalysisString() throws FormulaAnalysis
    {
        int[] count = new int[] {0000};
        while(isComplete(count))
        {
            int index = analysisObj.lastIndexOf(“%“);
            if(index!=-1)
                //有%
            {
                int preIndex = getPreNumIndex(index);
                if(preIndex==-1)
                    throw new FormulaAnalysis(“Math error“);
                BigDecimal per_num = new BigDecimal(analysisObj.substring(preIndex index));
                analysisObj=analysisObj.replace(analysisObj.substring(preIndex index+1)clearDecimal(percent(per_num).toString()));
            }
            else
            {
                count[0]=1;
                System.out.println(“not found %“);
            }


            index = analysisObj.lastIndexOf(“√“);
            if(index!=-1)
                //有√--root
            {
                int nextIndex = getNextNumIndex(indexfalse);
                if(nextIndex==-1)
                    throw new FormulaAnalysis(“Math error“);

                if(nextIndex==analysisObj.length()-1)
                    nextIndex++;
                BigDecimal root_num = new BigDecimal(analysisObj.substring(index+1 nextIndex));
                analysisObj=analysisObj.replace(analysisObj.substring(index nextIndex) clearDecimal(square(root_num).toString()));
            }
            else
            {
                count[2]=1;
                System.out.println(“not found root“);
            }

            index = analysisObj.lastIndexOf(“^“);
            if(index!=-1)
                //有幂
            {
                int nextIndex = getNextNumIndex(indexfalse);
                int pretIndex = getPreNumIndex(index);
                if(nextIndex==-1){
                    throw new FormulaAnalysis(“Math error“);
                }
                if(nextIndex==analysisObj.length()-1){
                    nextIndex++;
                }
                BigDecimal pow_num1 = new BigDecimal(analysisObj.substring(pretIndex index));
                BigDecimal pow_num2 = n

评论

共有 条评论