软件工程个人作业02(修改)

改动原因:上个星期的作业没有说清是否需要输出结果,由于我第一次作业也输出了结果(虽然看其他人也都没有输出结果),于是决定第二次也要输出结果,结果就卡在输出结果上了,写了整整几个小时也没写出来个所以然,结果就企图用最基本的if else语句来解决问题,导致最后写了足足4K行,也没有成功实现。这个星期留完作业后,才意识到前两次作业并不需要输出结果,加上这两天时间充裕,于是又反过来想了一下,写了一个改良版的第二次作业,如下:

1.设计思想:

① 在程序的开头询问需要的条件: 

1>是否有乘除法;

2>是否有括号(最多可以支持十个数参与计算);

3>数值范围;

4>加减有无负数;

5>除法有无余数(若前面询问的有无乘除法为无,则不再询问);

6>一共有多少个式子;

② 设定一个二维数组,大小为number(总式子数量)X 10;

③ 设定一个循环来监测有多少次有效的循环,当循环达到number时,结束程序;

否则,对各个位进行随机取值,并保存在数组里,并且和之前随机产生的数组进行比较,若完全相同,则重新随机取值,否则,随机产生一个数字来判定每个式子是有几个数字组成的,并且设定一个对应长度的数组来存放相应个数的运算符号,对每一位进行挨个输出,若存在数字为负数,则在输出时在两边同时加上括号。

2.源程序代码:

  1 import java.util.Scanner;
  2 
  3 public class SecondCalculate
  4 {
  5     public static void main(String args[])
  6     {
  7         @SuppressWarnings("resource")
  8         Scanner in=new Scanner(System.in);
  9 //---------------要求规定---------
 10         System.out.print("请输入打印运算式的数量:");
 11         int number=in.nextInt();
 12         
 13         char symbollist[]=new char[4];
 14         System.out.print("①请问是否有乘除法(1:是 2:不是):");
 15         int flag=in.nextInt();
 16         if(flag==1)
 17         {
 18             symbollist[0]='+';
 19             symbollist[1]='-';
 20             symbollist[2]='*';
 21             symbollist[3]='/';
 22         }
 23         else
 24         {
 25             symbollist[0]='+';
 26             symbollist[1]='-';
 27             symbollist[2]='+';
 28             symbollist[3]='-';
 29         }
 30         
 31         System.out.print("②请问是否有括号(1:是 2:不是):");
 32         int boolbracket=in.nextInt();
 33         
 34         System.out.print("③请问需要数据范围是(先输入下界,后输入上界):");
 35         double min=in.nextDouble();
 36         double max=in.nextDouble();
 37         
 38         System.out.print("④请问加减有无负数(1:有 2.无):");
 39         int negative=in.nextInt();
 40         if(negative==2)
 41         {
 42             if(min<0)
 43             {
 44                 min=0;
 45             }
 46         }
 47         
 48         if(flag==1)
 49         {
 50             System.out.print("⑤除法有无余数(1:是 2:不是):");
 51             int boolremainder=in.nextInt();
 52         }
 53         System.out.println();
 54         
 55         
 56         int space[][]=new int [number][10];
 57         int symtime,time;
 58         
 59         for(time=0;time<number;)
 60         {
 61             for(int i=0;i<10;i++)
 62             {
 63                 space[time][i]=(int)(Math.random()*(max-min+1)+min);
 64             }
 65             //判断所生成的数组中是否和之前产生的数组完全一致
 66             int flag1=1;
 67             for(int i=0;i<time;i++)
 68             {
 69                 for(int j=0;j<10;j++)
 70                 {
 71                     if(space[time][j]==space[i][j])
 72                     {
 73                         flag1=0;
 74                     }
 75                     else
 76                     {
 77                         flag1=1;
 78                     }
 79                 }
 80             }
 81             //随机判断下面要产生的式子是由几个数字构成的
 82             int s=(int)(Math.random()*(10-2+1)+2);
 83             
 84             if(flag1==1)
 85             {
 86                 if(boolbracket==1&&s!=2)
 87                 {
 88                     System.out.print("(");
 89                 }
 90                 System.out.print(space[time][0]);
 91                 char p[]=new char [s-1];
 92                 for(int i=1;i<s;i++)
 93                 {
 94                     symtime=(int)(Math.random()*(3-0+1)+0);
 95                     p[i-1]=symbollist[symtime];
 96                     System.out.print(p[i-1]);
 97                     if(space[time][i]<0)
 98                     {
 99                         System.out.print("("+space[time][i]+")");
100                     }
101                     else
102                     {
103                         System.out.print(space[time][i]);
104                     }
105                     
106                     if(boolbracket==1&&i==(s-1)/2&&s!=2)
107                     {
108                         System.out.print(")");
109                     }
110                 }
111                 System.out.println("=");
112                 time++;
113             }
114         }
115     }
116 }

3.运行结果截图:

原文地址:https://www.cnblogs.com/Daddy/p/5322535.html