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

    一.程序设计思想

    1.主函数中设置变量,和程序开始时输出的内容。定义一个BuildOperation函数来实现功能;

    2.BuildOperation函数中,首先定义四个数组,分别储存计算式的第一个数字、符号转化中间变量,符号和第二个数字;

    3.然后随机产生变量,在此过程中,需要先判断是否有乘除法,最后将产生的随机数储存在数组中;

    4.在随机生成后,开始依次判断,设置变量T,当有一方不满足题意,改变T的值,从而使这组随机数重新生成;

    5.依次判断加减法是否有负数,除法是否有余数,所有计算式是否有重复,在判断计算式是否有重复时,需要考虑到加法与乘法的特殊性;

    6.根据打印数量将产生的所有符合要求的式子打印出来。

    二、程序源代码

      1 //20160314||20160316||20160319
      2 //信1405-1班20142973魏垚
      3 //四则运算02
      4 
      5 import java.util.Scanner;
      6 
      7 public class Four_Operation_02 {
      8 
      9     public static void main(String[] args) {
     10         // TODO Auto-generated method stub
     11         
     12         Scanner in=new Scanner(System.in);
     13     
     14         System.out.print("请依次对以下要求做出选择:
    ");
     15         System.out.print("1:请输入数值范围:
    ");
     16         int numF=in.nextInt();                             //numF:数值范围
     17         System.out.print("2.请选择是否有乘除法:
    ");
     18         System.out.print("(1):是            (2):否
    ");
     19         int ccYN=in.nextInt();                             //ccYN:是否有乘除法
     20         int yushu = 0;
     21         if(ccYN==1)
     22         {
     23             System.out.print("除法是否有余数:
    ");
     24             System.out.print("(1):是            (2):否
    ");
     25             int ys=in.nextInt(); 
     26             yushu=ys;                                      //yushu:是否有余数
     27         }
     28         if(ccYN==2)
     29         {
     30             yushu=1;
     31         }
     32 //        System.out.print("3.是否有括号:
    ");
     33 //        System.out.print("(1):是            (2):否
    ");
     34 //        int khYN=in.nextInt();                             //khYN:是否有括号
     35         System.out.print("4.加减法是否有负数:
    ");
     36         System.out.print("(1):是            (2):否
    ");
     37         int fushu=in.nextInt();                            //fushu:是否有负数
     38         System.out.print("5.请输入打印数量:
    ");
     39         int printNUM=in.nextInt();                         //printNUM:打印数量
     40         
     41         //调用
     42         BuildOperation(numF,ccYN,yushu,/*khYN,*/fushu,printNUM);
     43         
     44     }
     45     
     46     //定义函数,实现功能
     47     public static void BuildOperation(int a1,int a2,int a3,/*int a4,*/int a5,int a6){
     48                                       //numF  ccYN   yushu  khYN   fushu  printNUM
     49         
     50         //定义数组,分别储存计算式的第一个数字、符号和第二个数字
     51         int fir[]=new int[a6];//第一个数
     52         int mid[]=new int[a6]; //符号转化的中间变量
     53         char fh[]=new char[a6];//符号
     54         int sec[]=new int[a6];//第二个数
     55         
     56         int T;//控制重新生成随机数的变量
     57 
     58         for(int i=0;i<a6;i++)
     59         {
     60             T=0;
     61             
     62             //随机产生
     63             fir[i]=(int)(Math.random()*a1);
     64             mid[i]=(int)(Math.random()*a1);
     65             if(a2==2)
     66             {
     67                 mid[i]=mid[i]%2;
     68                 if(mid[i]==0)fh[i]='+';
     69                 if(mid[i]==1)fh[i]='-';
     70             }
     71             if(a2==1)
     72             {
     73                 mid[i]=mid[i]%4;
     74                 if(mid[i]==0)fh[i]='+';
     75                 if(mid[i]==1)fh[i]='-';
     76                 if(mid[i]==2)fh[i]='*';
     77                 if(mid[i]==3)fh[i]='/';
     78             }
     79             sec[i]=(int)(Math.random()*a1);
     80             if(fh[i]=='/')
     81             {
     82                 while(sec[i]==0)
     83                 {
     84                     sec[i]=(int)(Math.random()*a1);
     85                 }
     86             }
     87             
     88             //负数
     89             if(a5==2)
     90             {
     91                 if(fh[i]=='-')
     92                 {
     93                     if(fir[i]-sec[i]<0)T=1;
     94                 }
     95             }
     96             
     97             //余数
     98             if(a3==2)
     99             {
    100                 if(fh[i]=='/')
    101                 {
    102                     if(fir[i]%sec[i]!=0)
    103                         T=1;
    104                 }
    105             }
    106             
    107             //是否重复
    108             for(int j=i-1;j>=0;j--)
    109             {
    110                 if(fh[i]==fh[j])
    111                 {
    112                     //判断数字有无相同
    113                     if(fir[i]==fir[j]&&sec[i]==sec[j])
    114                         T=1;
    115                     //加法与乘法前后数字也不能都相同
    116                     if(fh[i]=='+'||fh[i]=='/')
    117                     {
    118                         if(fir[i]==sec[j]&&sec[i]==fir[j])
    119                             T=1;
    120                     }    
    121                 }
    122             }
    123             if(T==1)i--;
    124         }
    125         
    126         //打印
    127         for(int m=0;m<a6;m++)
    128         {
    129             System.out.print(fir[m]);
    130             System.out.print(fh[m]);
    131             System.out.print(sec[m]);
    132             System.out.print("=
    ");
    133         }
    134     }
    135 }

    三、程序运行截图

    四.问题

    程序并没有实现是否有括号(最多可以支持十个数参与计算)此功能。

    五.时间记录日志

    3.14:课堂上对问题初步了解,开始构思;

    3.16:开始着手编程,对问题深入思考,用代码解决问题;(此次编程并未完成)3.19:对程序做最后完善,并且查看有无繁琐代码,将代码改到最简,最后完成编程。

    六.缺陷记录日志

    本次编程过程中对漏掉分号,括回号等语句代码错误未做及时记录,下次将如实做好记录;

    本次编码中,最初准备用while语句对T值来循环实现查看是否重复功能,但在编写过程中,发现方法并不对,更改为将for循环句中i的值在满足某种情况下减1,实现功能。

    截图:

    后更改为:

  • 相关阅读:
    删除docker thin 空间解决文件满不能拉起docker问题
    kafka服务端和客户端均无法消费
    prometheus 配置支持consul动态拉取
    spring cloud consul配置
    使用arthas分析慢查询
    nginx日志格式配置
    spring secrity添加和去掉x-frame-options deny安全头
    java POI解析word为文本内容
    sublime text 3 插入当前时间
    CUnit 安装笔记
  • 原文地址:https://www.cnblogs.com/weiyao/p/5295878.html
Copyright © 2011-2022 走看看