其他分享
首页 > 其他分享> > 四则运算统计正确率

四则运算统计正确率

作者:互联网

今天完成四则运算程序,可以实现出指定题数的题目,能够统计正确率,并且能够重做错题。

如下代码:

import java.util.Random;
import java.util.Scanner;
public class Test2 {  public static void main(String[] args) {
  // TODO 自动生成的方法存根
  Scanner scanner=new Scanner(System.in);
  System.out.println("请输入出题题数:");
  int sum = scanner.nextInt();
  //int c=scanner.nextInt();
  /*int sum = 0,c = 0;
  sum(sum);
  fanwei(c);*/
  int[] arr1=new int[sum*2];
  int[] xuhao=new int[sum];
  int[] shu1=new int[sum];
  int[] fuhao=new int[4];
  int[] shu2=new int[sum];
  randomArr(arr1);
  /*for(int i=0;i<rand.length;i++) {
   System.out.println(rand[i]);
  }*/
  
  System.out.println("是否出现乘除运算,是输入1,否输入0");
  //Scanner scanner=new Scanner(System.in);
  int x=scanner.nextInt();
  int k=0,m=0,right=0;
  
  switch(x) {
  case 0:
   //String[] operate=new String[]{"+","-"};
      Random rand=new Random();
      for(int i=0;i<arr1.length;i=i+2){
       int rand1=rand.nextInt(2);
       if(rand1==0) {
        System.out.println(k+1+".  "+arr1[i]+'+'+arr1[i+1]+"=");
       
        int jieguo=scanner.nextInt();
       
        if(arr1[i]+arr1[i+1]==jieguo) {
         System.out.println("正确!");right++;
        }
        else {
         System.out.println("错误,已记录在错题本");xuhao[m]=k+1;shu1[m]=arr1[i];fuhao[m]=0;shu2[m]=arr1[i+1];   m++;     }
       
        }
      
      else if(rand1==1) {
           System.out.println(k+1+".  "+arr1[i]+'-'+arr1[i+1]+"=");
         int jieguo=scanner.nextInt();
         if(arr1[i]-arr1[i+1]==jieguo) {
          System.out.println("正确!");right++;
         }
         else {
          System.out.println("错误,已记录在错题本");xuhao[m]=k+1;shu1[m]=arr1[i];fuhao[m]=1;shu2[m]=arr1[i+1];   m++;     }
       }
      
        ++k;}
     
      break;
     
  case 1:
     
       Random rand2=new Random();
       for(int i=0;i<arr1.length;i=i+2){
        int rand1=rand2.nextInt(4);
        if(rand1==0) {
         System.out.println(k+1+".  "+arr1[i]+'+'+arr1[i+1]+"=");
         int jieguo=scanner.nextInt();
         if(arr1[i]+arr1[i+1]==jieguo) {
          System.out.println("正确!");right++;
         }
         else {
          System.out.println("错误,已记录在错题本");xuhao[m]=k+1;shu1[m]=arr1[i];fuhao[m]=0;shu2[m]=arr1[i+1];   m++;     }
        
         }
        else if(rand1==1) {
            System.out.println(k+1+".  "+arr1[i]+'-'+arr1[i+1]+"=");
          int jieguo=scanner.nextInt();
          if(arr1[i]-arr1[i+1]==jieguo) {
           System.out.println("正确!");right++;
          }
          else {
           System.out.println("错误,已记录在错题本");xuhao[m]=k+1;shu1[m]=arr1[i];fuhao[m]=1;shu2[m]=arr1[i+1];   m++;     }
        }
        else if(rand1==2) {
             System.out.println(k+1+".  "+arr1[i]+'*'+arr1[i+1]+"=");
           int jieguo=scanner.nextInt();
           if(arr1[i]*arr1[i+1]==jieguo) {
            System.out.println("正确!");right++;
           }
           else {
            System.out.println("错误,已记录在错题本");xuhao[m]=k+1;shu1[m]=arr1[i];fuhao[m]=2;shu2[m]=arr1[i+1];   m++;     }
        }
        else if(rand1==3) {
             System.out.println(k+1+".  "+arr1[i]+'/'+arr1[i+1]+"=");
           int jieguo=scanner.nextInt();
           if(arr1[i]/arr1[i+1]==jieguo) {
            System.out.println("正确!");right++;
           }
           else {
            System.out.println("错误,已记录在错题本");xuhao[m]=k+1;shu1[m]=arr1[i];fuhao[m]=3;shu2[m]=arr1[i+1];   m++;     }
        }
         ++k;}
       break;
 }
  System.out.println("正确率:"+(right*100)/sum+"%");
  
  System.out.println("是否重做错题?是输入1,否输入0");
  int cout=scanner.nextInt();
  
  while(cout==1) {
   String[] operate=new String[]{"+","-","*","/"};
   
   for(int i=0;i<m;i++) {
    //System.out.println(xuhao[i]+'.');
    System.out.println(shu1[i]+operate[fuhao[i]]+shu2[i]+'=');
    int jieguo1=scanner.nextInt();
    if(fuhao[i]==0) {
     while(jieguo1!=shu1[i]+shu2[i]) {
      System.out.println("错误,请重新输入答案:");
      jieguo1=scanner.nextInt();
     }
     System.out.println("正确");
  }
    else if(fuhao[i]==1) {
     while(jieguo1!=shu1[i]-shu2[i]) {
      System.out.println("错误,请重新输入答案:");
      jieguo1=scanner.nextInt();
     }
     System.out.println("正确");
 }
    else if(fuhao[i]==2) {
     while(jieguo1!=shu1[i]*shu2[i]) {
      System.out.println("错误,请重新输入答案:");
      jieguo1=scanner.nextInt();
     }
     System.out.println("正确");
     }
    else if(fuhao[i]==3) {
     while(jieguo1!=shu1[i]/shu2[i]) {
      System.out.println("错误,请重新输入答案:");
      jieguo1=scanner.nextInt();
     }
     System.out.println("正确");
   }
  }
   System.out.println();
   System.out.println();
   System.out.println("已结束!!!");
   break;
}
  if(cout==0) {System.out.println("已退出!!!");}
}  
 
    public static int[] randomArr(int[] arr) {
        Random rd = new Random();
        for (int i = 0; i < arr.length; i++) {
            int count = 0;
//            arr[i]=rd.nextInt(10)+1;//常规来说是这样.但是我想输出不重复的随机数
            int temp = rd.nextInt(100);//先将随机数赋值给一个中间变量
            //然后再遍历一遍数组,如果有相同的,就不算,并且i--重新随机.
            for (int j = 0; j < arr.length; j++) {
                if (arr[j] == temp) {
                    count++;//在外循环定义一个计数器,在内循环内判断是否重复.否则循环结束
                    //内循环中的变量不能用于外循环
                }
            }if (count>0){//内循环结束,在外循环判断是否计数器>0,如果是,就i--,重新随机.
               //否则赋值给数组
                i--;
            }else{
                arr[i] = temp;
            }
        }
        return arr;
    }
   
   
 
 
}

标签:nextInt,int,四则运算,System,正确率,arr1,println,统计,out
来源: https://www.cnblogs.com/8-b-9/p/15489757.html