zoukankan      html  css  js  c++  java
  • 四则运算 三

    设计思想;

    1、setNumberMount(int s)函数设置算式中数字的个数  若输入的数字个数小于2 ,则重新输入此值。

    2、setOperatorMount(int ss)函数设置算式中运算符的个数

    3、setOperator()函数将随机数转化为运算符

    4、setValue()利用随机数给算式中的数字和字符赋值 分别储存在number 和 operator数组中

    5、setNewArray()函数将两个数组赋值给另一个新的数组nArray。将两个数组交替赋值  如:2*3+5=

    6、calculate()函数进行计算。首先将nArray数组赋值给tArray数组。先判断nArray数组里面是否有乘除。若nArray[i]处有,则计算nArray[i-1]乘或除nArray[i+1],然后将计算的值赋值给nArray[i-1],然后将后面的值依次赋值到前面。最后将nArray赋值给tArray数组。乘除运算完成后,同理进行加减运算。将tArray数组赋值给cArray数组,租后得到最终的计算结果。

    7、userInput()函数让用户进行结果的输入。

    8、 resultCompare()函数判断用户输入的结果是否正确。若正确,则输出you are right  若错误,则输出you are wrong 。

    9、show()函数输出题目。

    10、括号功能未完成。

    源代码:

      1 import java.util.Scanner;
      2 public class Text3_2 {
      3 
      4     public static void main(String[] args) {
      5         // TODO Auto-generated method stub
      6         Scanner n = new Scanner(System.in);
      7         int nn=0;
      8         while (nn<2)
      9         {
     10             System.out.println("Please input number mount >= 2");
     11             nn = n.nextInt();
     12         }
     13         
     14         CalculateThree c = new CalculateThree();
     15         c.setNumberMount(nn);
     16         c.setOperatorMount(nn-1);
     17         c.setValue();
     18         //c.setString();
     19         c.setNewArray();
     20         c.show();
     21         c.userInput();
     22         c.calculate();        
     23         c.resultCompare();
     24     }
     25 
     26 }
     27 class CalculateThree
     28 {
     29     int number[];//储存数字
     30     char operator[];//储存运算符
     31     char operatorT;
     32     int nMount;//数字数量
     33     int oMount;//运算符数量
     34     int oRandom;
     35     int inputN[];
     36     int resultN;
     37     int realResult;
     38     //String addS="";
     39     //char nNumber[];
     40     String nArray[];//number和operator数组的和
     41     String tArray[];//nArray数组的改变
     42     String cArray[];//tArray数组的改变
     43     void setNumberMount(int s)//设置算式中数字的个数
     44     {
     45         nMount = s;
     46     }
     47     void setOperatorMount(int ss)//设置算式中运算符的个数
     48     {
     49         oMount = ss;
     50     }
     51     void setOperator()//运算符的转化
     52     {
     53         
     54         oRandom = (int)(Math.random()*100);
     55         if(oRandom%4==0)
     56         {
     57             operatorT = '+';
     58         }
     59         else if(oRandom%4==1)
     60         {
     61             operatorT = '-';
     62         }
     63         else if(oRandom%4==2)
     64         {
     65             operatorT = '*';
     66         }
     67         else if(oRandom%4==3)
     68         {
     69             operatorT ='/';
     70         }
     71     }
     72     void setValue()//给数字和运算符随机赋值
     73     {
     74         int i;
     75         number = new int [nMount];
     76         operator = new char [nMount];
     77         for(i=0;i<nMount;i++)
     78         {
     79             number[i] = (int)(Math.random()*100);
     80         }
     81         for(i=0;i<oMount;i++)
     82         {
     83             setOperator();
     84             operator[i] = operatorT;
     85         }
     86         operator[nMount-1] = '=';
     87     }
     88     void setNewArray()//将两个数组赋值给另一个新的数组
     89     {
     90         int i,jj=0;
     91         nArray = new String [2*nMount];
     92         for( i=0;i<nMount*2;i=i+2)
     93         {
     94             if(i+1==nMount*2-1)
     95                 nArray[2*nMount-1] = String.valueOf(operator[nMount-1]);
     96             for(int j=jj;j<nMount;j++)
     97             {
     98                 nArray[i]=String.valueOf(number[j]);
     99                 nArray[i+1]=String.valueOf(operator[j]);    
    100                 break;
    101             }
    102             jj=jj+1;
    103         }
    104     }
    105     
    106     void calculate()//进行计算
    107     {
    108         int i,j,k=0;
    109         tArray = new String [2*nMount-2*k];
    110         
    111         //先将nArray数组值赋入tArray
    112         for(i=0;i<2*nMount-2*k;i++)
    113         {
    114             tArray[i]=nArray[i];
    115         }
    116         
    117         for(i=0;i<2*nMount;i++)
    118         {
    119             //先将算式中的乘除算完
    120             if(nArray[i]=="*"||nArray[i]=="/")
    121             {
    122                 System.out.println("hahaha1");
    123                 if(nArray[i]=="*")
    124                 {
    125                     System.out.println("hahaha2");
    126                     int num1=Integer.parseInt(nArray[i-1]);
    127                     int num2=Integer.parseInt(nArray[i+1]);
    128                     int num = num1*num2;
    129                     nArray[i-1]=String.valueOf(num);
    130                     for(j=i;j<2*nMount-2;j++)
    131                     {
    132                         nArray[j]=nArray[j+2];
    133                     }
    134 
    135                     k++;//确定得到新的数组的长度
    136                     //tArray = new String [2*nMount-2*k];
    137                     for(i=0;i<2*nMount-2*k;i++)//得到新的数组tArray 
    138                     {
    139                         tArray[i]=nArray[i];
    140                     }
    141 
    142                 }
    143                 else if(nArray[i]=="/")
    144                 {
    145                     System.out.println("hahaha3");
    146                     int num1=Integer.parseInt(nArray[i-1]);
    147                     int num2=Integer.parseInt(nArray[i+1]);
    148                     int num = num1/num2;
    149                     nArray[i-1]=String.valueOf(num);
    150                     for(j=i;j<2*nMount-2;j++)
    151                     {
    152                         nArray[j]=nArray[j+2];
    153                     }
    154                     k++;//确定得到新的数组的长度                        
    155                     for(i=0;i<2*nMount-2*k;i++)//得到新的数组tArray 
    156                     {
    157                         tArray[i]=nArray[i];
    158                     }
    159                 }
    160             }    
    161         }
    162 
    163         
    164         //再将算式中的加减算完                
    165             int p=1,z=0;            
    166             while(p==1)
    167             {
    168                 cArray = new String [2*nMount-2*k];
    169                 for(i=0;i<2*nMount-2*k;i++)
    170                 {
    171                     if(tArray[i]=="+"||tArray[i]=="-")
    172                     {
    173                         System.out.println("hahaha4");
    174                         if(tArray[i]=="+")
    175                         {
    176                             System.out.println("hahaha5");
    177                             int num3 = Integer.parseInt(tArray[i-1]);
    178                             int num4 = Integer.parseInt(tArray[i+1]);
    179                             int num = num3+num4;
    180                             tArray[i+1]=String.valueOf(num);
    181                             for(j=i;j<2*nMount-2*k;j++)
    182                             {
    183                                 tArray[j]=tArray[j+2];
    184                             }
    185                             z++;//确定得到的新的数组的长度
    186                             for(i=0;i<nMount*2-2*k-2*z;i++)//得到新的数组cArray
    187                             {
    188                                 cArray[i]=tArray[i];
    189                             }
    190                         }
    191                         else if(tArray[i]=="-")
    192                         {
    193                             System.out.println("hahaha6");
    194                             int num3 = Integer.parseInt(tArray[i-1]);
    195                             int num4 = Integer.parseInt(tArray[i+1]);
    196                             int num = num3-num4;
    197                             tArray[i+1]=String.valueOf(num);
    198                             for(j=i;j<2*nMount-2*k;j++)
    199                             {
    200                                 tArray[j]=tArray[j+2];
    201                             }
    202                             z++;//确定得到的新的数组的长度
    203                             for(i=0;i<nMount*2-2*k-2*z;i++)//得到新的数组cArray
    204                             {
    205                                 cArray[i]=tArray[i];
    206                             }
    207                         }
    208                     }
    209                 }
    210                 for(i=0;i<2*nMount-2*k-2*z;i++)
    211                 {
    212                     if(cArray[i]!="+"&&cArray[i]!="-"&&cArray[i]!="*"&&cArray[i]!="/")
    213                         p=2;
    214                 }
    215             
    216             }
    217             realResult = Integer.parseInt(cArray[2*nMount-2*k-2*z-2]);
    218     }
    219 
    220     void userInput()
    221     {
    222         System.out.println("Please input your result");
    223         Scanner r = new Scanner(System.in);
    224         resultN = r.nextInt();
    225         
    226     }
    227     void resultCompare()
    228     {
    229         if(resultN==realResult)
    230         {
    231             System.out.println("You are right");
    232         }
    233         else 
    234             System.out.println("You are wrong");
    235     }
    236     void show()
    237     {
    238 
    239         for(int i=0;i<nMount*2;i++)
    240         {
    241             System.out.print(nArray[i]);
    242         }
    243         System.out.println("
    "+"
    ");
    244     }
    245 }

    截图:

    分析:

    学习了通过断点判断程序运行的问题出处,(但是仍未解决)。栈的使用。

    学会了字符串字符数组的应用等。

    时间记录日志:

    日期 开始时间 结束时间 中断时间 净时间 活动 备注 c u
    3.21 8:00 9.50 10 100 上课 课间休息    
      4:00 5:00   60 阅读      
    3.22 9:00 10:00   60 阅读      
    3.25 7:30 9:30 30 90 编程 休息 查资料    
    3.26 9:30 11:30 20 100 编程 查资料    
      3:00 5:00 10 80 编程      
       6:00  7:30    90  编程      
                     

    缺陷记录日志:

    日期 编号 引入阶段 排除阶段 修复时间 修复缺陷
    3.25 1 编码 编译 1min  
    描述:数组的赋值有误
      2 编码 编码 1min  
    描述:字符串数组 与字符数组
      3 编码 编译 未知  

                                                     描述:经过断点判断程序中if条件未运行 还未解决

    项目计划总结:

    任务

    日期

    听课 编程 阅读课本   日总计
    周一3.21 100   60   160
    3.22     60   60
    3.25   90     90
    3.26   270     270
               
               
               
    周总计 100 360 120    

    阶段时间和效率

    总计 580        
    平均 82.5        
    最大 270        
    最小 60        

    学习合作图;

  • 相关阅读:
    Mybatis 动态sql(转载)
    mapper映射文件配置之select、resultMap(转载)
    mapper映射文件配置之insert、update、delete(转载)
    MyBatis主配置文件(转载)
    函数装饰器和闭包(二)
    函数装饰器和闭包(一)
    指针的指针(二)
    指针的指针(一)
    Makefile基础(三)
    Python之多线程与多进程(二)
  • 原文地址:https://www.cnblogs.com/hzxsg0919/p/5323863.html
Copyright © 2011-2022 走看看