• 练习一升级及分析


      1 //20150324 练习1 
      2 import java.util.*;
      3 public class exercise {
      4     static int a,b;
      5     static char[]ch={'+','-','*','/'};
      6     static Scanner in=new Scanner(System.in);
      7     static int number,right=0;
      8     static double answer;
      9     static int total=0;
     10 
     11     public static void main(String[] args)
     12  {                
     13         System.out.println("数学四则运算题目 	注意例子:(3/4)为真分数四分之三
    测试开始
     
    打印题目数量:");
     14         number=in.nextInt();//出题数目
     15         for(int i=0;i<number;i++)    
     16         {    int n = new Random().nextInt(5);//获取运算的方式0—— +    1—— -    2—— *    3—— /
     17             if(n==0 || n==2 || n==3 || n==1)//int型的运算
     18             {
     19                 a = new Random().nextInt(100);
     20                 b =new Random().nextInt(100)+1;//获取式子的运算随机数
     21                 System.out.print(a+""+ch[n]+""+b+"=");//输出式子
     22         
     23                 answer=in.nextDouble();//获取答案处理用户输入
     24                 //判断答案是否正确的方法
     25                judge(n);//判断是否正确
     26               }
     27             else if(n==4)//含有真分数的运算
     28              {
     29                 int c = 0;
     30                 int d=0;
     31                 int e=0;
     32                 int f=0;
     33                 int fm=0;
     34                 int fz=0;//答案的分子分母
     35                 boolean t = true;
     36                 while(t==true)//判断并输出真分数
     37                 {
     38                      c = new Random().nextInt(10);
     39                      d =new Random().nextInt(10);//获取式子的运算随机数
     40                     if(c<d)
     41                         t=false;
     42                     
     43                 }
     44 
     45                 t=true;
     46                 while(t==true)//判断并输出真分数
     47                 {
     48                      e =new Random().nextInt(10);
     49                      f =new Random().nextInt(10);//获取式子的运算随机数
     50                     if(e<f)
     51                         t=false;
     52                     
     53                 }
     54                 n=new Random().nextInt(4);
     55                 System.out.print("("+c+"/"+d+")"+ch[n]+"("+e+"/"+f+")"+"=");
     56                 answer=in.nextInt();
     57                 //真分数运算的判断
     58                 if(n==0)//加法
     59                 {    
     60                     fm=d*f;
     61                     fz=(c*f)+(e*d);
     62                     if(answer==(fz/fm))
     63                     {
     64                         System.out.printf("答对了!!
    ");
     65                         right=right+1;
     66                     }
     67                     else
     68                         System.out.println("答错了!!答案是"+(fz/fm));
     69                 }
     70                 else if(n==1)//减法
     71                 {    
     72                     fm=d*f;
     73                     fz=(c*f)-(e*d);
     74                     if(answer==(fz/fm))
     75                     {
     76                         System.out.printf("答对了!!
    ");
     77                         right=right+1;
     78                     }
     79                     else
     80                         System.out.println("答错了!!答案是"+(fz/fm));
     81                 }
     82                 else if(n==2)//乘法
     83                 {    
     84                     fz=c*e;
     85                     fm=d*f;
     86                     if(answer==fz*fm)
     87                     {
     88                         System.out.printf("答对了!!
    ");
     89                         right=right+1;
     90                     }
     91                     else
     92                         System.out.println("答错了!!答案是"+(fz*fm));
     93                 }
     94                 else if(n==3)//除法
     95                 {    
     96                     fz=c*f;
     97                     fm=d*e;
     98                     int ans=(int)(fz/fm);
     99                     if(answer==ans)
    100                     {
    101                         System.out.printf("答对了!!
    ");
    102                         right=right+1;
    103                     }
    104                     else
    105                         System.out.println("答错了!!答案是"+(fz/fm));
    106                 }
    107                  
    108                  
    109              }
    110             
    111         }
    112         //打分统计
    113         System.out.print("总共"+number+"题"+"	答对了"+right+"题
    ");
    114         System.out.print("你的分数是:	");
    115         if(right==number)
    116             System.out.print("100分");
    117         else 
    118             System.out.print((total=right*(100/number))+"分");
    119         
    120     }
    121     static void judge(int n)//判断对错
    122     {
    123     
    124         if(n==0)
    125         {    
    126             if(answer==a+b)
    127             {
    128                 System.out.printf("答对了!!
    ");
    129                 right=right+1;
    130             }
    131             else
    132                 System.out.println("答错了!!答案是"+(a+b));
    133         }
    134         else if(n==1)
    135         {    
    136             if(answer==a-b)
    137             {
    138                 System.out.printf("答对了!!
    ");
    139                 right=right+1;
    140             }
    141             else
    142                 System.out.println("答错了!!答案是"+(a-b));
    143         }
    144         else if(n==2)
    145         {    
    146             if(answer==a*b)
    147             {
    148                 System.out.printf("答对了!!
    ");
    149                 right=right+1;
    150             }
    151             else
    152                 System.out.println("答错了!!答案是"+(a*b));
    153         }
    154         else if(n==3)
    155         {    
    156             int ans=(int)(a/b);
    157             if(answer==ans)
    158             {
    159                 System.out.printf("答对了!!
    ");
    160                 right=right+1;
    161             }
    162             else
    163                 System.out.println("答错了!!答案是"+(a/b));
    164         }
    165     }
    166 }

    执行情况:1.执行后台。如图:

    2.判断对错。如图:

    3.记分情况。每题分值会因为提数不同而不同,总分是100.如图

    待改进的情况,问题:

    1.除法运算只能将结果为整型;如15/16=  如果答案是0就正确,应该为0.93才对,除法结果处理不合理,而且也只局限整型中的运算;

    2.针对含有真分数的运算,暂时只能让用户输入最终的答案,如果输入真分数答案会出错。如图

  • 相关阅读:
    maven-eclipse-plugin downloadSources downloadJavadocs
    maven的resources插件
    Intellij IDEA 添加项目依赖
    git 代码统计
    windows查看局域网ip
    Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目
    git push fatal: HttpRequestException encountered. An error occurred while sending the request
    ubuntu15中tomcat开机自动启动
    ubuntu15 设置静态ip && centos7设置静态ip
    ubuntu15.10 下时间同步
  • 原文地址:https://www.cnblogs.com/maxx/p/4375543.html
Copyright © 2020-2023  润新知