软件工程概论四则运算3

         设计思路:

    

1、题目要求:

    在之前自动出题程序的基础之上,添加新的功能:

        ①能判断用户的输入答案是否正确,正确与否,给出提示,若错误,显示正确答案;

        ② 能处理四则运算的混合算式。

2、实现思路:

     出题思路不变,对原来程序生成的算式文本,进行读取每一个算式并进行计算,若输入的答案与结果相等,即计算正确。

在运行混合运算时先随机产生第一个整数,将其转化为字符串,循环产生num4-1个运算符和参加混合运算的整数,将产生的整数以及运算符存入两个数组中,混合四则运算的计算   遍历所有运算符先计算乘除,再计算加减。

       程序源代码:

      import java.util.Scanner;
    import java.util.Random;
public class sizeyunsuan3
{
 public  static void main(String args[])
 {
  
  int ab,a,b,c,e,f,q,r=0;
  int down,up;
  double anwser1,anwser2;
  Scanner scanner =new Scanner(System.in);
   System.out.println("请输入你需要的最大值");//先考虑整数的
        
         e=scanner.nextInt();
         System.out.println("请输入你需要的最 小值");
         f=scanner.nextInt();
  System.out.println("请输出你需要多少道题");
  int h0=scanner.nextInt();
  System.out.println("请输出你要进行的运算: 1 二数运算  2 四则混合运算");
  int as=scanner.nextInt();
  
  if(as==1)
  {
  
 
  int i=0,j=0,k=0,p=0;
  for(int h=0;h<h0;h++)
  {   
   b=(int)(Math.random()*4+0);
   a=(int)(Math.random()*e+f);
   c=(int)(Math.random()*e+f);
  
   
   
   if(b==0){
    System.out.println(a+"+"+c+"=");
    System.out.println("请输入你的算式的答案:");
    int w=scanner.nextInt();
    if(w==a+c){
     System.out.println("你的答案正确!");
    i++;
    }
    else
    {
     System.out.println("你的答案错误!");
   }
    }
   if(b==1){
   
    System.out.println(a+"-"+c+"=");
    System.out.println("请输入你的算式的答案:");
    int a1=scanner.nextInt();
    if(a1==a-c)
    {
     System.out.println("你的答案正确!");
     j++;
     }
    else
    {
     System.out.println("你的答案错误!");
   }
   }
   if(b==2)
   {
    System.out.println(a+"*"+c+"=");
    System.out.println("请输入你的算式的答案:");
    int a2=scanner.nextInt();
    if(a2==a*c){
     System.out.println("你的答案正确!");
     k++;
    }
     else
     {
     System.out.println("你的答案错误!");
   }
   }
   if(b==3)
   {
    System.out.println(a+"/"+c+"=");
    System.out.println("请输入你的算式的答案:");
    int a3=scanner.nextInt();
    if(a3==a/c)
    {
     System.out.println("你的答案正确!");
     p++;
    }
    else
    {
     System.out.println("你的答案错误!");
   }
   }
      
     
   
  }
        int w;
        w=j+k+i+p;
        System.out.println("你一共对了"+w+"道题");
  }
  
  
  
  if(as==2){
   
   
   
   char Q[]={'+','-','*','/'};
      for(int i=0;i<h0;i++)
     { 
      int num1,num2,num3,num4,p,p1;
      num4=(int)(Math.random()*9+2); //随机产生混合运算中整数的个数
      double[] j=new double[num4];char[]k=new char[num4];
      num2=(int)(Math.random()*e+f);//随机产生第一个整数
      j[0]=num2;
      String str1=String.valueOf(num2);  //将随机产生的第一个整数转换成字符串形式
      int y=1,l=0;
      for(int z=0;z<num4-1;z++)     //循环产生num4-1个运算符和参加混合运算的整数
        {  
       num1=(int)(Math.random()*4+0);
       num3=(int)(Math.random()*e+f);
       j[y]=num3;k[l]=Q[num1];     //将产生的整数以及运算符存入两个数组中
       ++y;++l;
       String str2=String.valueOf(num3);//将num3转换成字符串
       str1=str1+Q[num1]+str2;  //按混合运算的形式变成字符串
        }
      System.out.println(str1+"=");
      System.out.print("请输入你的答案:");
      anwser1=scanner.nextDouble();
        for(p=0;p<num4-1;p++)    //混合四则运算的计算   遍历所有运算符先计算乘除,再计算加减
        {
         if(k[p]=='*')
         
         {  
          j[p+1]=j[p]*j[p+1];
             j[p]=0;
             k[p]='+';
         }
         else if(k[p]=='/')
         {
          j[p+1]=j[p]/j[p+1];
             j[p]=0;
             k[p]='+';
         }
        
        }
        for(p1=0;p1<num4-1;p1++)
        {
         if(k[p1]=='+')
         {
          j[p1+1]=j[p1]+j[p1+1];
             j[p1]=0;
         }
         else if(k[p1]=='-')
         {
          j[p1+1]=j[p1]-j[p1+1];
             j[p1]=0;
         }
        }
        anwser2=j[num4-1];
        if(anwser1==anwser2)
        {System.out.println("恭喜!输入正确!");r++;}
      else
        {System.out.println("Sorry!输入错误!");
        System.out.println("正确答案是:"+anwser2);}
    }
        System.out.println("一共答对了"+r+"道题!");
       
     }
     }}

       程序截图:

 

 

编程总结分析:

在编程过程中, 第一次体验了结对开发编程,其中的好处不言而喻,锻炼了团队沟通能力,团结协作解决问题的能力。但是有时候难免会产生不同的思路,而且在编第二个问题的时候,又去看上学期学的数据结构,重新又学习了相关的知识。

 

posted @ 2016-03-26 09:37  beifangderen  阅读(206)  评论(0编辑  收藏  举报