zoukankan      html  css  js  c++  java
  • 多项式计算器

    /**

    完成多项式的计算器,可以进行多项式的加法,减法,乘法三种运算。

    */

    import java.util.ArrayList;

    import java.util.List;
    import java.util.Scanner;
    import java.util.Stack;

    public class ExpressionMain {

    public static void main(String[] args) {
    expressionCalculator();
    }

    private static void expressionCalculator() {

    System.out.println("This is a polynomials program. " +
    "Please enter a valid command: " +
    "[?] Read a Polynomial. " +
    "[=] Return a Polynomial. " +
    "[+] Sum two Polynomial. " +
    "[-] Difference two Polynomial。 " +
    "[*] Mult one Polynomial with a term Polynomial. " +
    "[Q] Quit. ");

    Scanner scanner = new Scanner(System.in);
    boolean isTheWorldAlive = true;

    Stack<Term> stack = new Stack<Term>();

    while (isTheWorldAlive) {
    System.out.println("Select command and presss <Enter>:");
    String command = scanner.next();
    if ("?".equals(command)) {
    boolean isCurrentExpressionInProgress = true;

    Term current = new Term();
    boolean firstTime = true;
    while (isCurrentExpressionInProgress) {
    System.out.println("coefficient?");
    int xishu = scanner.nextInt();
    if (xishu != 0) {
    System.out.println("exponent?");
    int zhishu = scanner.nextInt();
    if (zhishu != 0) {
    if(firstTime){
    current.setXishu(xishu);
    current.setZhishu(zhishu);
    firstTime = false;
    }else{
    Term temp = current;

    while(temp.next != null){
    temp = temp.next;
    }
    temp.next = new Term(xishu, zhishu);

    }

    } else {
    System.out.println("The following has been pushed to Stack:");
    System.out.println(current.toString());
    stack.push(current);
    isCurrentExpressionInProgress = false;
    }

    } else {
    System.out.println("The following has been pushed to Stack:");
    System.out.println(current.toString());
    stack.push(current);
    isCurrentExpressionInProgress = false;
    }
    }

    } else if("+".equals(command)){
    System.out.println(Expression.add(stack.pop(), stack.pop()));

    }else if("-".equals(command)){
    System.out.println(Expression.minus(stack.pop(), stack.pop()));

    }else if("*".equals(command)){
    System.out.println(Expression.mutiple(stack.pop(), stack.pop()));
    }
    else if ("Q".equalsIgnoreCase(command)) {
    isTheWorldAlive = false;
    }


    }
    }

    }

    class Term {
    private int xishu;
    private int zhishu;

    Term next = null;

    Term(){}
    Term(int xishu, int zhishu){
    this.xishu = xishu;
    this.zhishu = zhishu;
    this.next = null;
    }
    public int getXishu() {
    return xishu;
    }

    public void setXishu(int xishu) {
    this.xishu = xishu;
    }

    public int getZhishu() {
    return zhishu;
    }

    public void setZhishu(int zhishu) {
    this.zhishu = zhishu;
    }

    public String toString(){
    String toString = xishu+"X^"+zhishu;
    Term term = this.next;
    while (term != null){
    int nextXishu = term.getXishu();
    toString = toString + ((nextXishu>0)?"+"+nextXishu:nextXishu)+"X^"+term.getZhishu();
    term = term.next;
    }

    return toString;
    }
    }

    class Expression {
    public static Term add(Term t1, Term t2){
    if(t1 == null){
    return t2;
    }else if(t2 == null){
    return t1;
    }else{
    Term term = new Term();
    if(t1.getZhishu() > t2.getZhishu()){
    term.setZhishu(t1.getZhishu());
    term.setXishu(t1.getXishu());
    t1 = t1.next;
    }else if(t1.getZhishu() == t2.getZhishu()){
    term.setZhishu(t1.getZhishu());
    term.setXishu(t1.getXishu() + t2.getXishu());
    t1 = t1.next;
    t2 = t2.next;
    }else{
    term.setZhishu(t2.getZhishu());
    term.setXishu(t2.getXishu());
    t2 = t2.next;
    }
    term.next = add(t1, t2);

    return term;
    }

    }

    public static Term minus(Term t1, Term t2){
    if(t1 == null){
    return t2;
    }else if(t2 == null){
    return t1;
    }else{
    Term term = new Term();
    if(t1.getZhishu() > t2.getZhishu()){
    term.setZhishu(t1.getZhishu());
    term.setXishu(t1.getXishu());
    t1 = t1.next;
    }else if(t1.getZhishu() == t2.getZhishu()){
    term.setZhishu(t1.getZhishu());
    term.setXishu(t2.getXishu() - t1.getXishu());
    t1 = t1.next;
    t2 = t2.next;
    }else{
    term.setZhishu(t2.getZhishu());
    term.setXishu(t2.getXishu() * -1);
    t2 = t2.next;
    }

    term.next = minus(t1, t2);

    return term;
    }


    }

    public static Term mutiple(Term t1, Term t2){
    Term temTerm;
    if(t1.getXishu() < t2.getXishu()){
    temTerm = t1;
    t1 = t2;
    t2 = temTerm;
    }

    List<Term> expressions = new ArrayList<Term>();
    expressions.add(mutipleSingleTermToWholeTerm(t1, t2));
    while (t2.next != null){
    t2 = t2.next;
    expressions.add(mutipleSingleTermToWholeTerm(t1, t2));
    }

    Term term = expressions.get(0);
    for(int i=1; i<expressions.size(); i++){
    term = add(term, expressions.get(i));
    }

    return term;
    }

    private static Term mutipleSingleTermToWholeTerm(Term t1, Term t2){
    Term term = new Term();
    term.setZhishu(t1.getZhishu() + t2.getZhishu());
    term.setXishu(t1.getXishu() * t2.getXishu());
    while (t1.next != null){
    t1 = t1.next;
    term.next = mutipleSingleTermToWholeTerm(t1, t2);
    }

    return term;
    }
    }

    //运行效果:(展示实现两个多项式的加法)

    查看全文
  • 相关阅读:
    设计模式学习笔记-观察者模式(转)
    VC++ 遍历文件夹
    VC++文件监控 ReadDirectoryChangesW
    Windows Socket五种I/O模型——代码全攻略(转)
    CentOS 6 安装RabbitMQ
    nginx tomcat负载配置
    Centos6 Nginx安装
    windows 安装MongoDB服务
    跟导师请教后写出的关于C#导出Excel,不导出隐藏列的方法
    linux 常用命令(四)——(centos7-centos6.8)Vim安装
  • 原文地址:https://www.cnblogs.com/cdlyy/p/10200953.html
  • 最新文章
  • php扩展安装范例
    Linux负载均衡实现
    python虚拟环境mkvirtualenv使用
    <定时主库导出/备库导入>
    《设置定时自动清理归档日志脚本 》
    前端框架对比之vue与regular(一)
    我眼中的微信小程序
    详解常用的gulp命令
    详解ES6
    基于jquery 的分页插件,前端实现假分页效果
  • 热门文章
  • 一款好用的分页插件用于regularJS
    一款好用的jquery评分插件
    SpringAOP与Redis搭建缓存
    Keepalived+lvs 搭建高可用负载均衡
    服务器搭建多个tomcat服务器
    Nginx反向代理,负载均衡,redis session共享,keepalived高可用
    python调用java API
    c指针之内存释放
    重定向标准输出到控制台
    VC使用CryptoAPI计算MD5
Copyright © 2011-2022 走看看

玻璃钢生产厂家玻璃钢景观雕塑平台电话多少福建玻璃钢仿铜雕塑定制玻璃钢雕塑上色方法常德雕塑玻璃钢玻璃钢马车雕塑视频景洪市玻璃钢雕塑设计价格表宣城动物玻璃钢雕塑公司曲阳玻璃钢雕塑批发玻璃钢民俗人物雕塑玻璃钢人物玻璃钢景观雕塑定做玻璃钢圆形座椅雕塑组合室内商场美陈订购天津商场主题创意商业美陈步骤树脂玻璃钢动物雕塑玻璃钢雕塑工艺品定制玻璃钢雕塑制作价位玉溪市玻璃钢雕塑公司张掖大型玻璃钢雕塑厂家商场推广美陈专员工作总结河南太湖石玻璃钢雕塑定制哈尔滨玻璃钢雕塑灯定制中山玻璃钢雕塑厂商大同玻璃钢仿铜雕塑价格宿州玻璃钢雕塑定做厂家淮南玻璃钢雕塑加工宽城区玻璃钢雕塑工程产品介绍梅州玻璃钢卡通雕塑代理商商场外街街道美陈南昌玻璃钢雕塑摆件崇明玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化