软件概论作业四则运算2

     

可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求:

1、题目避免重复;
2、可定制(数量/打印方式);
3、可以控制下列参数:

n是否有乘除法;
n是否有括号(最多可以支持十个数参与计算);
n数值范围;
n加减有无负数;
n除法有无余数!
           
 
      程序思路:

用Ascll码来显示加减乘除号的随机生成

避免出题重复:利用数组,让产生的式子不再相同

打印方式:用输入输出流

    可定制:随机生成一个数量少于10的数组。

    是否有乘除法:条件判断,用条件约束输出中符号的随机情况。

    数值范围:在产生随机数时通过键入控制模,从而使运算数不超过此范围。

    加减有无负号:用switch case 进行操作

    除法有无余数:用switch case进行操作。

        程序代码:

import java.io.*;

import java.util.Scanner;

 

 

public class Suiji {

 

    public static void main(String args[])

    {

      

       int y,o,p;int a,b,c,d;

       char  x[]={42,43,45,47};//定义+-*/

       char m[]={42,47};//*/

       char n[]={43,45};//+-

       int []arr={};

      

       Scanner scanner =new Scanner(System.in);

       System.out.print("请输入一个你想要的运算的个数:");

       int h1=scanner.nextInt();

      

      

       System.out.println("请输入运算的数的个数:");  //定义有多少个数运算

        int  h=scanner.nextInt();   //运算式的个数

    System.out.println("请输入你的范围:");

    int j=scanner.nextInt();

    y=(int)(Math.random()*x.length+0);

    o=(int)(Math.random()*m.length+0);

    p=(int)(Math.random()*n.length+0);

    System.out.println("*************请选择你需要的功能***************");

    System.out.println("1:整数的加减运算,2:分数的加减运算,3:整数有负数,4:整数无负数");

    int L=scanner.nextInt();

   

 

    System.out.println("********************************");

      //保证其不重复

      for(int i=1;i<=h1;i++)

      {

         int z[]=new int [h1+1];

         int v[]=new int [h1+1];

         int r[]=new int [h1+1];

         a=(int)(Math.random()*j+1);

         b=(int)(Math.random()*j+1);

         y=(int)(Math.random()*x.length+0);

         z[i]=a;

         v[i]=b;

         r[i]=y;

         for(int a1 =1;a1<i-1;a1++)

         {

             if(z[i]==z[a1]&&v[i]==v[a1]&&r[i]==r[a1])

             {

              do

              {

                  a=(int)(Math.random()*j+1);

                    b=(int)(Math.random()*j+1);

                 

              }

                while(z[i]==z[a1]&&v[i]==v[a1]&&r[i]==r[a1]);

            

            

             }

             }

            

         }

     

 

    for(int i=0;i<h1;i++)

    {

   

         a=(int)(Math.random()*j+1);

           b=(int)(Math.random()*j+1);

           c=(int)(Math.random()*j+1);

           d=(int)(Math.random()*j+1);

          

           p=(int)(Math.random()*n.length+0);

          

             //分母不为零

             if(b!=0){b++;}

             if(d!=0){d++;}

             //为最简式

             for(int f=a;f>0;f--)

             { 

                if(a%f==0&&b%f==0)

                {

                a=a/f;

                b=b/f;

                }

             }

             for(int g=c;g>0;g--)

             { 

                if(c%g==0&&d%g==0)

                {

                c=c/g;

                d=d/g;

                }

             }

      

             

      switch(L)

             {

      case 1:

      {

         System.out.println("("+a+n[p]+c+")"+"=");

         }

         break;

     

        

        

        

        

      case 2:{

         System.out.println("("+a+"/"+b+")"+n[p]+"("+b+"/"+d+")"+"=");

         }

         break;

        

     

        

            

     

     

     

      case 3:

      {

         System.out.println(a+"-"+c+"=");}

      break;

        

      case 4:

         if(a<c)

         {

             int temp;

             temp=a;

             a=c;

             c=temp;

             System.out.println(a+"-"+c+"=");

            

            

         }break;

            

     

      }

     

    }

     

     

     

     

     

      

    System.out.println("*************请选择你需要的功能***************");

    System.out.println("1:整数的乘除运算,2:分数的乘除运算,3:整数有余数,4:整数无余数"

           );

    int M =scanner.nextInt();

 

    System.out.println("********************************");

   

   

       for(int i=0;i<h1;i++)

       {        a=(int)(Math.random()*j+1);

              b=(int)(Math.random()*j+1);

              c=(int)(Math.random()*j+1);

              d=(int)(Math.random()*j+1);

             

              p=(int)(Math.random()*n.length+0);

                //分母不为零

                if(b!=0){b++;}

                if(d!=0){d++;}

                //为最简式

                for(int f=a;f>0;f--)

                { 

                    if(a%f==0&&b%f==0)

                    {

                  a=a/f;

                  b=b/f;

                    }

                }

                for(int g=c;g>0;g--)

                { 

                    if(c%g==0&&d%g==0)

                    {

                    c=c/g;

                    d=d/g;

                    }

 

               

                }

       switch(M)

       {

       case 1:

       {

           System.out.println("("+a+m[o]+c+")"+"=");

           }

           break;

          

       case 2:

          

          

       {

      

           System.out.println("("+a+"/"+b+")"+m[o]+"("+c+"/"+d+")"+"=");

           }

           break;

          

   

       case 3:

           {    if(a<b)

           {

              int temp;

              temp=a;

              a=b;

              b=temp;

           }

              System.out.println(a+"/"+b+"=");}

           break;

       case 4:

       {if(a%b==0)

 

          

          

        

             System.out.println(a+"/"+b+"=");

        

       else{h1--;break;}

      

          

      

      

       }break;

      

       }

  

      

       try { FileOutputStream fos = new FileOutputStream("C:/a.txt");

       PrintStream stream = new PrintStream(fos);

       stream.print("("+a+m[o]+c+")"+"=");

      

 

   

        }  catch(Exception e)

       {

        e.printStackTrace();

       

       }

       }

      

    }

 

   

    }

   程序截图:

 

事后总结:

在编写程序的过程中,对java的函数调用方式不熟悉,对变量的输入方式不太了解,然后就去百度上查询,对于此项目的一个条件括号的利用没有实现,后面还需努力

   

 

 

 

      

      

      

       

   

   

   

   

   

   

   

   

   

   

   

   

      

      

      

      

      

      

   

posted @ 2016-03-19 17:17  beifangderen  阅读(185)  评论(0编辑  收藏  举报