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.运行结果及分析



♻️ 资源

大小: 27.7KB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87415702

基于Java语言实现一元稀疏多项式计算器【100010608】相关推荐

  1. 基于Java实现的一元稀疏多项式计算器

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

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

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

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

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

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

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

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

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

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

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

  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. STE:入侵植物可选择性富集土壤微生物
  2. python常用函数-python常用魔法函数
  3. 完美世界第二题:模拟读数字
  4. 可长点心吧-sort
  5. Python实训day03pm【列表生成式、非文本文件的读写与复制、文本文件读写练习】
  6. 【IT资讯】TIOBE - 2020年7月编程语言排行
  7. js 字符串操作函数有哪些
  8. 央采数据库集采:甲骨文、微软、腾讯、阿里等 21 家中标
  9. idea messages中文乱码_2019.2版本IDEA控制台中文乱码尝试了很多方法都不行
  10. collections模块使用方法
  11. Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
  12. MySQL基础(DML,DQL,增删改查)
  13. pandas常用数据处理函数整理
  14. 沈小滨 项目管理中的领导力
  15. android手机wifi快的办法,手机wifi如何设置网速变快(这样设置网速瞬间堪比5G)...
  16. zkLedger: Privacy-Preserving Auditing for Distributed Ledgers
  17. 计算机科学与技术专业前沿技术相关论文,计算机科学与技术专业创新能力的培养途径论文...
  18. PHP常说的SAPI是什么
  19. 【再聚乌镇】百余家大数据企业齐聚,发布七大榜单两大产业地图,共览大数据产业全景!...
  20. 两年聚37亿美元,“庞氏骗局” 维卡币负责人在美被捕

热门文章

  1. 一款赛丽麦进销存软件V0.99-9已开源,永久免费,Mysql数据库
  2. 尚硅谷谷粒商城第五天 分类、规格、商品增删改查
  3. “技术男”升为“管理者”,角色一定要转变,有好方法吗?
  4. 孙长银机器人_【分会新闻】第二期自动化前沿热点论坛:2017智能机器人与无人系统论坛成功举办...
  5. 数字信号处理——FFT运算模块设计(2)
  6. linux cp目录到指定目录,linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹...
  7. “老年人”涌入 Snapchat,它的酷劲也差不多完了
  8. Java枚举和C枚举的转换——JNI笔记
  9. SmartNovel——自动帮你写文章
  10. 第16课:scratchjr猫与鸟的较量