一、目的
学会用Java编写简单的四则运算。
二、步骤
思路分析:拿到表达式后,按照人的计算方法先乘除后加减,遍历运算符,得出结果。
三、核心代码
package sizeyunsuan; import java.util.Scanner; public class Szys { public static void main(String[] args) { Scanner str1 = new Scanner(System.in); System.out.println("请输入:"); String str = str1.nextLine(); String strs = str.replace("+","-"); String[] s = strs.split("-"); double temp=0; double sum=0; //遍历截取了的字符数组 for(String a:s){ //查找有*或/的数组 if(a.contains("*")||a.contains("/")){ //遍历带符号的数组 for(int i=0;i<a.length();){ //设置一个变量,来控制下标, int count = 1; //需要截取的字符串长度 a:for(int j=i+1;j<a.length();j++){ //取出下一个字符 char c = a.charAt(j); //System.out.println(c+"==="); //如果字符是*或/ if(c=='*'||c=='/'){ //终止a循环 break a; }else{ //如果不是就长度加一; count++; } } //截取字符串 String strNun =a.substring(i,i+count); // System.out.println(strNun+"========="); //转变为数字 double d = Double.parseDouble(strNun); //第一个数字 if(i==0){ temp = d; }else{ //取出当前的数字前面的符号 char t =a.charAt(i-1); //如果运算符是* if(t=='*'){ //前一个数就乘它 temp*=d; }else if(t=='/'){ temp/=d; } } //把坐标向后移一个长度 i+=count+1; } str = str.replace(a, temp+""); } } //计算加减,与上面的思路一样 for(int i = 0;i<str.length();){ int count =1; a:for(int j=i+1;j<str.length();j++){ char c = str.charAt(j); if(c=='+'||c=='-'){ break a; }else{ count++; } } String strNum = str.substring(i,i+count); double d =Double.parseDouble(strNum); if(i==0){ sum=d; }else { char s2 =str.charAt(i-1); if(s2=='+'){ sum+=d; }else if(s2=='-'){ sum-=d; } } i+=count+1; } System.out.println(sum); } }
四、运行结果
五、psp阶段
psp | 任务内容 | 计划完成需要用的时间 | 实际完成所用的时间 |
planning | 计划 | 2 | 3 |
明确需求 | 估计这个任务大概需要多久,以及所进行的步骤 | 2 | 3 |
Development | 开发 | 40 | 60 |
Analysis | 需求分析 | 5 | 10 |
Design | 具体设计 | 2 | 5 |
Coding | 具体编码 | 40 | 68 |
Code Review | 代码复审 | 20 | 30 |
Test | 测试,包括修改 | 2 | 15 |
Reporting | 报告 | 1 | 2 |
////// | 计算工作量 | 2 | 3 |
///// | 事后总结,并提出规程还进计划 | 5 | 7 |
六、个人总结
在写代码的时候,需要先有清晰的思路,现在脑子里大概构思好,然后再进行代码的编写,而且在写代码的过程中,需要不断的回忆以前的旧知识,也可以复习一下以前的知识,真是佩服那些程序员们,真厉害,因为是团队的问题,写的代码不仅自己能看懂,也得让别人也看懂,太厉害了,但是由于的我能力有限,没能写出出现括号的情况,如果表达式里面带有括号的话,运行会出错。
虽然每次写作业耗费了大量的时间和精力,但是让我学会了很多东西,获得了宝贵的经验。