资源下载地址:https://download.csdn.net/download/sheziqiong/85896976
资源下载地址:https://download.csdn.net/download/sheziqiong/85896976

1.实验内容

一元稀疏多项式计算器

使用语言:Java 语言

编译环境:openJDk-1.8

2.问题描述

设计一个简易的一元稀疏多项式计算器。

3.需求分析

经过分析,本系统需完成的主要功能如下:

  • 通过图形化界面点击按钮输入或键盘输入多项式
  • 通过输入限制确保符合一元稀疏多项式的格式
  • 通过按钮组选择输出结果:多项式计算结果、在某点的值、多项式的导数(扩展功能)
  • 多项式的计算功能
  • 多项式的求值功能
  • 多项式的求导功能

4.概要设计

-=ADT=-
{void do_bracket_event (String ss); //括号输入操作void do_mark_event (String ss);     //运算符输入操作void do_backspace_event (String ss);       //删除操作void do_number_event (String ss); //数值输入操作void do_ decimalPoint_event (String ss);    //小数点输入操作void do_ equals_event (String ss); //运算输出操作void do_ clear_event (String ss);   //清空重置操作Boolean resultPreOperate(); //运算输出前置操作void derivation();    //导数运算void value(); //数值运算void Polynomial();    //多项式运算
}

5.存储结构

通过 ArrayList<ArrayList> 和 TreeMap<Double, Double> 存储

ArrayList<ArrayList>外层存储整个多项计算式中的每个一级多项式

内层 ArrayList 存储每个一级多项式中的每项

TreeMap 进行运算过程,将每一项的指数作为 Key,相同指数的系数加和作为对应的 Value

6.算法流程图

7.算法时间复杂度分析

本程序主要以操作 treeMap 为主,故时间复杂度为 O(logn)

8.调试分析

本程序主要的操作对象是 ArrayList 与 TreeMap,最重要的操作是输入限制和字符串切割,这是本程序中的重点,是此程序可能出现问题的主要原因之一:

【问题一】

现象:输入计算式在检测加入 ArrayList 时出现错误。

原因:程序期待的输入内容应为 aX^b(其中 a 为系数 b 为指数)但实际输入过程中会有所省略。例如在指数为 1 的时候会省略 ^b,在指数为 0 的时候(即该项为常数项时)会省略 X^b,所以在实际运行过程中应加入相应的分支判断来保证省略写法依旧能代表完整意义加入到存储结构中,且在输出过程中也应该进行相应的输出优化以符合日常用户阅读书写逻辑,例如当系数和指数为整数时不再显示小数点及其后面的 0,当系数为 1 或-1 的时候省略掉系数中的数字,当该项为常数项时只显示数字,当该项的指数为 1 时不显示指数,前面没有其他项的时候加号不再显示,计算后系数为 0 的项不再显示,当所有项系数均为 0 的时候最后结果显示为 0。

【问题二】

现象:ArrayList 加载到 TreeMap 时出现错误。

原因:输入限制限制不全面。应严格限制输入规范,如加减号不应连续贴合出现,每一项中应只出现一个 X,每一项中只能出现一个 ^,结果输入框中只有在 ^ 后面才能添加-,小数点的数量应该严格规范不应在系数或指数部分出现多个小数点导致数值录入失败。

【问题三】

现象:结果输出指数项为正序。

原因:比较器自然排序默认从小到大。在实例化 TreeMap 的同时传入逆序的比较器(o1, o2) -> -Double.compare(o1, o2)。

【问题四】

现象:结果输出文本框中从右开始会使部分字符顺序出现问题,如 “^” “-”。

原因:JavaFx 原生问题。设置右对齐替换文本从右开始,尝试使用 CSS 样式进行控制发现 JavaFx 的 TextField 并不能很好的适配 CSS 的文本右对齐,最终在 FXML 文件中设置 alignment=“CENTER_RIGHT” 和 nodeOrientation="LEFT_TO_RIGHT"完成右对齐操作并不出现视觉错误。

9.运行结果及分析

资源下载地址:https://download.csdn.net/download/sheziqiong/85896976
资源下载地址:https://download.csdn.net/download/sheziqiong/85896976

基于Java实现的一元稀疏多项式计算器相关推荐

  1. 基于Java语言实现一元稀疏多项式计算器【100010608】

    1.实验内容 一元稀疏多项式计算器 使用语言:Java 语言 编译环境:openJDk-1.8 2.问题描述 设计一个简易的一元稀疏多项式计算器. 3.需求分析 经过分析,本系统需完成的主要功能如下: ...

  2. 用java的jni调用C语言的API,实现带图形界面的一元稀疏多项式计算器

    实现步骤: 1) 完成Java代码,编写好Java调用类. 2) 编译你的Java类. 3) 用javah生成编译好的class文件对应的C/C++ 函数的头文件. 4) 实现头文件中的函数原型,编写 ...

  3. 一元稀疏多项式计算器(Java)

    要求: 一元稀疏多项式计算器 [问题描述] 设计一个一元稀疏多项式简单计算器. [基本要求]一元稀疏多项式简单计算器的基本功能是: (1) 输入并建立多项式 : (2) 输出多项式,输出形式为整数序列 ...

  4. java 一元稀疏多项式简单计算器,一元稀疏多项式计算器实验报告

    一元稀疏多项式计算器实验报告 课程名称:数据结构 实验名称: 一元稀疏多项式计算器 学 院:钱学森学院 实 验 日 期 2020年 05 月 08日 诚信承诺:我保证本实验报告中的程序和本实验报告是我 ...

  5. 完整版一元稀疏多项式计算器

    一元稀疏多项式计算器 [问题描述]: 设计一个一元稀疏多项式简单计算器. [基本要求]: 一元稀疏多项式简单计算器的基本功能是: (1)输出并建立多项式: (2)输出多项式,输出形式为整数序列:n,c ...

  6. 已知稀疏多项式C语言版,一元稀疏多项式计算器C语言课程设计

    <一元稀疏多项式计算器C语言课程设计>由会员分享,可在线阅读,更多相关<一元稀疏多项式计算器C语言课程设计(26页珍藏版)>请在人人文库网上搜索. 1.学号2014-2015学 ...

  7. XDOJ 一元稀疏多项式计算器 C

    前言 让汗水成为铠甲,把困顿化为良机. 题干 问题描述 一元 n 次多项式p0 x^0+···+pi x^i···+pn x^n项数较少时成为一元稀疏多项式, 例如:3 + 6 x^3 − 2 x^8 ...

  8. 一元稀疏多项式计算器 【 数据结构课设作业 】 带界面,无bug,可以直接运行

    一元稀疏多项式计算器 问题描述 设计一个一元稀疏多项式简单计算器. 基本要求 (1)输入并建立多项式. (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,-,cn,en,其中n是多项式 ...

  9. 数据结构课程设计---实现一元稀疏多项式计算器

    课程设计课题: 设计一个一元稀疏多项式简单计算器,能够实现五大基本功能: (1)输入并建立多项式: (2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,-,cn,en,其中n是多项式的项 ...

最新文章

  1. hashmap的各种问题及答案
  2. 【Linux常用命令】grep命令
  3. Drupal 引入JS文件的几种方式
  4. 今天换了ubuntu10.04
  5. BlockingCollectionT 类实现 列队操作
  6. Atitit.故障排除系列---php 程序网站数据库错误排除流程
  7. 揭秘ServerBootstrap神秘面纱(服务端ServerBootstrap)
  8. netstat命令详解Linux,Linux netstat命令详解
  9. HeitiCSEG 文鼎CS大黑 字体下载
  10. 小米钱包笔试算法2020-12
  11. 函数指针数组的一些用法
  12. 2020年汽车驾驶员(高级)报名考试及汽车驾驶员(高级)在线考试
  13. Flutter高仿微信-第52篇-群聊-清空聊天记录
  14. android fps测试 源码,转一个刺激战场极限帧率代码和修改教程,亲测流畅不卡
  15. php 密码字符串限制,关于php:密码安全随机字符串函数
  16. 另类解决部分黑苹果Monterey下蓝牙睡眠后启动异常缓慢的问题
  17. win10 tensorflow-gpu1.4 rtx2060 安装详细教程 fater-rcnn
  18. 关于Form表单的提交与验证???
  19. 小程序实现左右菜单联动(-)
  20. Unity [hold on busy for 老长长时间的解决方法]

热门文章

  1. Process Explorer函数调用方式
  2. Praat提取的基频可以工程应用吗?
  3. 大数据,到底是“阿拉丁神灯”还是“潘多拉魔盒”?
  4. C语言: 字符串 -2
  5. 大话设计模式——工厂模式
  6. 不用计算机怎么连接无线,电脑不用网线怎么连接无线网 不用无线网卡连接WiFi教程...
  7. vivo手机怎么恢复信息_vivo手机短信删除了怎么恢复-互盾安卓恢复大师
  8. 通达oa服务器文件夹管理,通达OA目录层次结构
  9. jmeter随机参数化
  10. matlab根据纬度计算当地重力加速度