• 小学生题目


    package java日常训练;
    import java.util.Random;
    import java.util.Scanner;
    public class Practice {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            //控制题目的数量
                    int m,m1,m2,m3,m4,m5,s=0,k=0;
                    
                    System.out.print("请输入题目的数量:"); 
                    Scanner sc = new Scanner(System.in);
                    m=sc.nextInt();
                    
                    System.out.print("请输入数值范围(最小数):"); 
                    Scanner min = new Scanner(System.in);
                    m1=sc.nextInt();
                    
                    System.out.print("请输入数值范围(最大数):"); 
                    Scanner max = new Scanner(System.in);
                    m2=sc.nextInt();
                    
                    if(m1>=m2)
                    {
                        System.out.print("输入错误!");
                        System.exit(0);//退出整个程序
                    }
                    System.out.print("是否有负数( 是1或者否2):");    //判断是否有负数
                    Scanner fs = new Scanner(System.in);
                    m5=sc.nextInt();
                    
                    if(m5==2){
                        if(m1>=m2||m1<0||m2<0)
                        {
                            System.out.print("输入错误!");
                            System.exit(0);//退出整个程序 
                        }
                        }
                Random r1 = new Random(10);    
                Random r2 = new Random(20);    
                Random r3 = new Random(30);    
                Random r4 = new Random(40);    
                Random r5 = new Random(50);    
        
                       System.out.print("是否有乘除法( 是1或者否2):"); 
                    Scanner yn = new Scanner(System.in);
                    m3=sc.nextInt();
                    
                    
                    System.out.print("除法有无余数(有1  无2):");           //控制是否有余数
                    Scanner 余数 = new Scanner(System.in);
                    m4=sc.nextInt();
                    
                    
                     for(int i = 0;i < m;i++){              
                        int c = r3.nextInt(120);
                    if(m3==2){    
                        k=c%2;  
                        }                                          //控制是否有乘除法
                    else 
                        k=c%4;
                    
                        int a = r1.nextInt(m2-m1+1)+m1;
                        int b = r2.nextInt(m2-m1+1)+m1;
                    
                    
                        switch(k){
                        case 0: System.out.println(a+"+"+b+"=");break;
                        case 1:
                             if(m5==2){
                                if(a>b){
                                    System.out.println(a+"-"+b+"=");break;
                                }
                                else System.out.println(b+"-"+a+"=");break;
                                }
                            
                             else System.out.println(a+"-"+b+"=");break;
                        case 2: System.out.println(a+"*"+b+"=");break;
                        case 3: if(m4==2){
                            
                           if(a%b==0){
                              System.out.println(a+"/"+b+"=");break;
                                         }
                        else   
                            label: for(int q=1;q<10000000;q++)         //为了保证题目中有一定数量的除法,则一直到生成一个有效的除法为止。
                        {
                            int f = r4.nextInt(m2-m1+1)+m1;
                            int d = r5.nextInt(m2-m1+1)+m1;
                            if(f%d==0){
                                System.out.println(f+"/"+d+"=");
                                break label;
                                
                                      }
                        }
                        }
                        else  System.out.println(a+"/"+b+"=");break;
                        }
                        
                        
        }                   
        }
        }            

    设计思路:

    首先,用一个语句用来定制数量和打印方式。

    然后,再控制参数,是否有乘除法(让用户选择,如果是,则把乘除法加入,如果不是,则删除乘除法),数值范围(random控制),加减有无负数(1.random取值不取负数,2,如果是除法,则加一个控制条件第一个数大于第二个数),除法有无余数(用%来控制,如果没有余数,则加一个条件,如果运算符为除法,a%b=0),是否支持分数(单独添加输出函数,判断分数的输出)。

    应该判断题目是否重复。用for循环来控制,如果第一个数重复,则检查第二个数,如果第二个数也重复,则检查运算符号,若都重复,则删除这一道题,另出一道题。如果在这三道控制中有一个不满足,则break退出。

    结果截图:

    编程感想:在处理加减有无负数的时候,如果减法中出现了负数,则让相减的两个数换位置,这样更简便一些。

                  没有把真分数和避免重复加入到程序中,以后会补上。

                  程序中变量太多太麻烦。应该再简洁一些。没有应用数组。

                  起初的程序用了太多的for循环,导致程序过于繁杂,后经过改正,只用了一个for循环。

    时间记录表

    时间 用时  
    3.14 2h 题目的数量和数值范围
    3.15 2h 是否有负数,是否有乘法
    3.16 1h 乘法是否有余数
    3.17 1h 发现程序过于繁杂
    3.18 2h 重新组合,改进
    3.19 1h 发现除法太少,进行改进保证除法的数量
  • 相关阅读:
    Java常用的函数式接口
    Java网络编程的使用
    Java 多线程的使用
    VB.NET_DBUtil
    java 文件操作与IO流的常用方法
    JAVA Excel.xlsx 上传于下载
    java测试类
    Java11 HashMap源码分析(一、文档翻译)
    Canal实现Redis缓存实时更新(二)
    Canal实现Redis缓存实时更新(一)
  • 原文地址:https://www.cnblogs.com/twentytwo/p/4350970.html
Copyright © 2020-2023  润新知