zoukankan      html  css  js  c++  java
  • 20165336 结对编程——四则运算(一)

    20165336 结对编程——四则运算(一)

    一、需求分析(描述自己对需求的理解,以及后续扩展的可能性)

    • 实现整数加、减、乘、除运算。(通过堆栈运用后缀表达式实现结果)
    • 扩展:实现分数的加减乘除运算。题目去重、支持多语言、处理生成题目并输出到文件、完成题目后从文件读入并判题。

    二、设计思路(同时输出UML类图)

    通过对堆栈的学习运用压栈和弹栈进行计算。

    • 如果遇到数字,我们就直接将其输出。
    • 如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。
    • 如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈。
    • 如果遇到运算符号且栈非空,查看栈顶元素,如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符。最后将该元素入栈。
    • 如果我们读到了输入的末尾,则将栈中所有元素依次弹出。

      思路图如下:

    三、实现过程中的关键代码解释

    import java.util.*;
    import java.lang.*;
    public class S {
       public static void main(String args[]) {
            Stack<Integer> stack=new Stack<Integer>();//创建堆栈
    	String z =args.toString();
    	int n = z.length();
    	int k;
    	for(int i=0;i<n;i++){
    	k=Integer.parseInt(args[i]);
    	if(k=='+'){//加运算
    	Integer F1=stack.pop();
    	int f1=F1.intValue();
    	Integer F2=stack.pop();
    	int f2=F2.intValue();
    	Integer temp=new Integer(f1+f2);
    	stack.push(temp);
    	}
    	else if(k=='-'){//减运算
    	Integer F1=stack.pop();
    	int f1=F1.intValue();
    	Integer F2=stack.pop();
    	int f2=F2.intValue();
    	Integer temp=new Integer(f1-f2);
    	stack.push(temp);
    	}
    	else if(k=='*'){//乘运算
    	Integer F1=stack.pop();
    	int f1=F1.intValue();
    	Integer F2=stack.pop();
    	int f2=F2.intValue();
    	Integer temp=new Integer(f1*f2);
    	stack.push(temp);
    	}
    	else if(k=='/'){//除运算
    	Integer F1=stack.pop();
    	int f1=F1.intValue();
    	Integer F2=stack.pop();
    	int f2=F2.intValue();
    	Integer temp=new Integer(f1/f2);
    	stack.push(temp);
    	}
    	else{
    	stack.push(new Integer(Integer.parseInt(args[i]))); 
    	}
    	}
    	Integer F1=stack.pop();
    	int f1=F1.intValue();
          	System.out.println(f1);  //输出结果
       }    
    }
    

    四、遇到的困难及解决方法

    这次实验我们小组有了思考的方向,两个人的结对学习提升了默契,两个人一个指挥一个掌舵,不断杨帆向前,虽然代码仍有bug,但是我们也依旧再完善,根据设计思路不断的修改,另一方面,依然有bug体现出来知识熟练度的欠缺,需要继续钻研,本周的进度就是这样,根据代码的完善,博客会更新,我相信在结对学习的努力下,我的Java学习会有所突破,不断进步。

    结对编程照片

  • 相关阅读:
    1.1.9 如何从正文开始设置页眉页脚
    1.1.8 怎样在Word的页眉中插入一级标题
    1.1.5 在同一折线图中画2条曲线
    1.1.4 图片自动编号
    1.1.3 公式编号对齐
    1.1.2 一页摘要不分栏,正文分栏
    1.1.1 参考文献格式未满行直接换行
    kernel page_size
    kernel cpu_cur_freq
    kernel printk
  • 原文地址:https://www.cnblogs.com/20165336kzq/p/8850238.html
Copyright © 2011-2022 走看看