四则运算
| 博客班级 | 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编写,学到了很多知识,通过查阅书本、网上资料完成基本代码编写。代码重复繁琐有冗余,需要再加以改进。
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号