zoukankan      html  css  js  c++  java
  • 四则运算


    博客班级 AHPU软件工程
    作业要求 实现小学四则运算并优化
    作业目标 熟练掌握代码编写
    学号 3180701209

    作业目标

    写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

    1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

    2)程序要求能处理用户的输入,判断对错,累积分数

    3)程序支持可以由用户自行选择加、减、乘、除运算

    4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

    代码

    定义变量

    Scanner input=new Scanner(System.in);
        double count;
        int answer,answer1,answer2;
        int a;//运算式第一个数字
        int b;//运算式第二个数字
        int sum;
        int[] data=new int[10];//结果数组
        int[] data1=new int[10];
        int[] data2=new int[10];
        String[] data3=new String[30];//运算符数组
        int m=10;
        int num,num1,num2,num3;
    

    加法

    public   void add() {
        	System.out.println("选择你要做题数目");
        	Scanner intput=new Scanner(System.in);
    	    num=intput.nextInt();
    	    int i;
            for(i=0;i<num/2;i++) {
            	b=(int) Math.round(Math.random()*10);          
                a=(int) Math.round(Math.random()*10);          
                sum=a+b;          
                 data[i]=sum;
                 data1[i]=a;
                 data2[i]=b;
                 data3[i]="+";
             }
             int a=num-i;
             int b=i;
             for(;i<b+2*a-1;i+=2)
             {
            	 data1[i]=(int) Math.round(Math.random()*10);
            	 data1[i+1]=(int) Math.round(Math.random()*10)+data1[1]; 
            	 data2[i]=(int) Math.round(Math.random()*10); 
            	 data2[i+1]=(int) Math.round(Math.random()*10)+data1[1];
            	 data[i]=(data1[i]*data2[i+1])+(data1[i+1]*data2[i]);
            	 data[i+1]=data1[i+1]*data2[i+1];
            	 int num=data[i]<data[i+1]? data[i]:data[i+1];
     			 int maxb=1;
     			for (int k = num; k >=2; k--) {
     				if (data[i]%k==0 && data[i+1]%k==0) {
     					maxb*=k;
     					data[i]=data[i]/k;
     					data[i+1]=data[i+1]/k;
     				}
     			}
             }
             int j;
             for(j=0;j<num/2;j++)
             { 
                 System.out.print(data1[j]+"+");
                 System.out.print(data2[j]);
                 System.out.print("=");
                 answer1=input.nextInt();
                 if(answer1==data[j]) 
                 {
                	 System.out.println("恭喜答案正确");
                     count++;
                 }else {
              	   System.out.println("答案错误");
                 }    
             }
             b=j;
             for(;j<b+2*a-1;j+=2)
             {  
                 System.out.print(data1[j]+"/"+data1[j+1]+"+"+data2[j]+"/"+data2[j+1]+"=");
                 answer1=input.nextInt();
                 System.out.print("/");
                 answer2=input.nextInt();
                 if(answer1==data[j]&&answer2==data[j+1]) 
                 {
                	 System.out.println("恭喜答案正确");
                     count++;
                 }else {
              	   System.out.println("答案错误");
                 }
    
             } 
                     System.out.println("一共答对"+count+"道题目");
        }
        
    

    减法

     public void min() {
    	    	System.out.println("选择你要做题数目");
    	    	Scanner intput=new Scanner(System.in);	    	
                int num1=intput.nextInt();
    			if(num1<m-num) {
                 for(int i=0;i<num1;i++) {
                	a=(int)(Math.random()*100);                                                
                     b=(int)(Math.random()*100);                     	                      
                     sum=a-b;             
                    data[i]=sum;
                    data1[i]=a;
                    data2[i]=b;
                    data3[i]="-";
                }
               
                    for(int i=0;i<num1;i++)
                    { 
                        System.out.print(data1[i]+"-");
                        System.out.print(data2[i]);
                        System.out.print("=");
                        answer=input.nextInt();
                        if(answer==data[i]) {
                        	System.out.println("恭喜答案正确");
                           count++;
                        }else {
                     	   System.out.println("答案错误");
                        }
                        if(i==num1-1) {
                            System.out.println("一共答对"+count+"道题目");
                        }
                    
                    
                }
    		}
                
        }
    

    乘法

    public void mult() {
        	   System.out.println("选择你要做题数目");
    	    	Scanner intput=new Scanner(System.in);	    	
    			int num2=intput.nextInt();
    			if(num2<m-num-num1) {               
                  for(int i=0;i<num2;i++){
                	 a=(int)(Math.random()*8+1);                               
                     b=(int)(Math.random()*8+1);                                
                     sum=a*b;
                     data[i]=sum;
                     data1[i]=a;
                     data2[i]=b;
                     data3[i]="*";
                 }
                 
                     for(int i=0;i<num2;i++)
                     { 
                         System.out.print(data1[i]+"*");
                         System.out.print(data2[i]);
                         System.out.print("=");
                         answer=input.nextInt();
                         if(answer==data[i]) {
                        	 System.out.println("恭喜答案正确");
                            count++;
                         }else {
                      	   System.out.println("答案错误");
                         }
                         if(i==num2-1) {
                             System.out.println("一共答对"+count+"道题目");
                         }
                     }
    			}
        }
    

    除法

     public void division() {
    		    	   System.out.println("选择你要做题数目");
    			    	Scanner intput=new Scanner(System.in);	    	
    					int num3=intput.nextInt();
    					if(num3<m-num-num1-num2) {    	                   
                       for(int i=0;i<num3;i++){
                    	   a=(int)(Math.random()*10);                                           
                           b=(int)(Math.random()*9+1);                    
                           sum=a/b;                    
                           data[i]=sum;
                           data1[i]=a;
                           data2[i]=b+1;
                           data3[i]="/";
                       }
                       
                           for(int i=0;i<num3;i++)
                           { 
                               int yushu=0;
                               System.out.print(data1[i]+"/");
                               System.out.print(data2[i]);
                               System.out.print("=");
                               answer=input.nextInt();
                               System.out.println("是否存在余数,存在:1 不存在:0");
                               int choice=input.nextInt();
                               if(choice==1) {
                                System.out.println("请输入余数:");
                                yushu=input.nextInt();
                                 }
                               if(answer==data[i]&&yushu==(data1[i]%data2[i])) {
                            	   System.out.println("恭喜答案正确");
                                 count++;
                               }else {
                            	   System.out.println("答案错误");
                               }
                               if(i==num3-1) {
                                   System.out.println("一共答对"+count+"道题目");
                               }
                           }
    			}
                           
           }
    

    选择运算方式菜单

    public    void menu() {
               System.out.println("1.加法");
               System.out.println("2.减法");
               System.out.println("3.乘法");
               System.out.println("4.除法");        
               System.out.println("  请输入:");
               String choice1=input.next();
               
               switch(choice1) {
               case "1":
               add();
               break;
               case "2":
               min();break;
               case "3":
               mult();break;
               case "4":
               division();break;
               default:
       			System.out.println("输入错误,请从新输入");
       			break;        
               }
           }    
    

    主方法

    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		 guocheng h=new guocheng();
    		 int f=1;
    	     while(f==1)
    	        {
    	            h.menu();
    	            System.out.println("请问是否继续输入是,是:1  否:0");
    	            Scanner intput=new Scanner(System.in);	    	
    	            f=intput.nextInt();
    	        }
    	    }
    

    运行截图

    运行界面
    加法
    减法
    乘法
    除法

    作业小结

    (1)psp表格

    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 100 80
    Development 开发 200 250
    Analysis 需求分析(包括学习新技术) 20 40
    Design Spec 生成设计文档 30 50
    Design Review 设计复审 5 10
    Coding Standard 代码规范 3 5
    Design 具体设计 10 12
    Coding 具体编码 80 90
    Code Review 代码复审 60 70
    Test 测试(自我测试,修改代码,提交修改) 10 15
    Reporting 报告 9 6
    Test Report 测试报告 3 2
    Size Measurement 计算工作量 3 2
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 3

    (2)心得和经验

    了解使用markdow编辑器来编写,尝试使用java编写,学到了很多知识,通过查阅书本、网上资料完成基本代码编写。代码重复繁琐有冗余,需要再加以改进。

  • 相关阅读:
    JAVA 一个接口多个实现类
    关于Web服务器
    美团买菜IOS版设备风控浅析与算法还原
    阿里App防Bot新版AliTigerTally方案浅析与算法还原1
    使用php的openssl_encrypt和python的pycrypt进行跨语言的对称加密和解密问题
    一个把人民币小写转换为大写中文的方法
    《重构》代码坏味道
    git 合并分支
    java中SPI机制 代码改变世界
    echo print print_r的区别
  • 原文地址:https://www.cnblogs.com/sunxianlan/p/13941011.html
Copyright © 2011-2022 走看看