zoukankan      html  css  js  c++  java
  • 四则运算Java语言实验设计过程1

    题目要求:

      像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”。要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。

     设计思路:首先通过random来进行随机数的产生,整数产生两个随机数,真分数需要产生四个随机数,并且可以通过字符串是否相等来对题目是否一致来进行判断,定制数量可以通过用户输入来进行设定循环的次数。

    //自动生成30道四则运算,(整数,真分数),题目避免重复,可定制数量。
    package calculator;
    import java.util.*;
    
    public class calculator {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//随机产生两位100以内的数
            int a,b;//(真分数即为分子比分母小)
            //随机产生运算符(+,-,*,/)
            char[] c={'+','-','*','/'};
            //随机生成整数运算或者真分数运算
            int[] e={1,2};
            System.out.println("请输入所要生成题目的数目:");
            Scanner sc=new Scanner(System.in);
            int number=sc.nextInt();
            System.out.println("生成的题目如下:");
            Random random=new Random();
            for(int i=1;i<=number;i++){
            	int index1=random.nextInt(e.length);
            	if(index1==0)//生成整数
            		{
            a=(int)(100*Math.random());   
            b=(int)(100*Math.random());
            int index2=random.nextInt(c.length);
            char d=c[index2];
            System.out.print(a);
            System.out.print(d);
            System.out.println(b+"=");}
            	else if(index1==1)//生成真分数
            	{
            		
            	}		
            }
    	}
    
    }
    

    然后在else后添加关于真分数的算法

    //循环法求两个数的最大公约数
            
            //保证第一个参数大于第二个参数
            if(a<b)
            {
                int temp;
                temp=a;
                a=b;
                b=temp;
            }
            while(a%b!=0)   //在余数不为零时循环
            {
                int temp=a%b;
                a=b;
                b=temp;
            }
            return b;  //返回最大公约数
        }
        
        public static int minCommon(int a,int b)
        {
            //求最小公倍数
            return a*b/maxCommon(a,b);
        }
        
        public static String reduce(int a ,int b)
        {
            //对于a/b组成的分数进行约分
            
            //第一步就是找出两者的最大公约数
            int c=maxCommon(a,b);
            
            //分子分母约分
            a=a/c; 
            b=b/c;
            
            //把a,b转换成分数返回
            String temp=a+"/"+b;
            return temp;
        }
        public static String calculate(String a,String b,String c) //参数分别代表第一个分数,第二个分数,以及运算符
        {
            int a1=Integer.parseInt(a.substring(0,1));//代表a的分子
            int a2=Integer.parseInt(a.substring(2));//代表a的分母
            int b1=Integer.parseInt(b.substring(0,1));//代表b的分子
            int b2=Integer.parseInt(b.substring(2));//代表b的分母
            if(c.equals("+"))
            {
                //首先求两个分母的最小公倍数,进行通分
                int temp=minCommon(a2,b2);
                a1=temp/a2*a1;
                b1=temp/b2*b1;
                
                //求合并后的分子
                int temp1=a1+b1;
                
                String temp2=reduce(temp1,temp);
                return temp2;
            }
            else if(c.equals("-"))
            {
                //首先求两个分母的最小公倍数,进行通分
                int temp=minCommon(a2,b2);
                a1=temp/a2*a1;
                b1=temp/b2*b1;
                
                //求合并后的分子
                int temp1=a1-b1;
                
                return reduce(temp1,temp);
            }
            else if(c.equals("*"))
            {
                //直接把分母相乘得到合并后的分母
                int temp=a2*b2;
                
                //求合并后的分子
                int temp1=a1*b1;
                
                return reduce(temp1,temp);
            }
            
            else if(c.equals("/"))
            {
                //分数相除就是第一个分数乘以第二个分数的倒数
                int temp=a2*b1;
                
                //求合并后的分子
                int temp1=a1*b2;
                
                return reduce(temp1,temp);
            }
            String a="成功了";
            return a;
    

    这个程序还需要有很多的改进,还需要进一步编写网页版,要尽早完成任务,完成王老板交代的要求!

  • 相关阅读:
    读取XML示例:C#获取XML的数据
    GridView不換行
    List<T> 的条件筛选 where使用方法
    [HDU] 1016 Prime Ring Problem
    [HDU] 1072 Nightmare 和HDU1180有点类似
    [HDU] 1180 诡异的楼梯个人觉得比较有趣的广搜索
    [HDU] 1312Red and Black 用广搜求能探寻到的点的数目
    [HDU] 1026 Ignatius and the Princess I 简单建模后广搜索求最短路径生成树
    [HDU] 1010 Tempter of the Bone最基本的深搜
    [HDU] 1175 连连看 剪枝优化后的性能飙升
  • 原文地址:https://www.cnblogs.com/zhangjiabei/p/6492180.html
Copyright © 2011-2022 走看看