• 软件工程个人作业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.运行结果截图:

  • 相关阅读:
    将php中stat()得到的文件权限转成Linux形式
    Linux终端命令快捷键
    我的测试博客
    java 的反射机制- 代码讲解
    毕业有感
    COPD——团队项目测试心得
    慢阻肺疾病管理APP——第一次迭代心得
    团队项目需求心得——慢阻肺疾病管理APP
    合作和共赢的结对编程——中小学试卷生成器
    项目组队——欣赏与批判队友个人项目源码
  • 原文地址:https://www.cnblogs.com/Daddy/p/5322535.html
Copyright © 2020-2023  润新知