软件工程个人作业01

四则运算(构建之法中提到的)

一:程序的设计思想(重新编辑了下2016.3.12 20:21/2016 3.15 13:27)
1)第一个版本:只有两个随机整数和符号的生成
2)改善:添加生成30个算术的循环,支持真分数的四则运算,添加减法运算中的限制(默认:结果为正,不做负数结果的运算),添加除法的限制(分母不为零)

二:源程序代码
第一版(上传时间:2016.3.10 14:26):
//四则运算 初始版本(不管任何条件,只是生成两个数和一个符号)
//毛雯雯20143066 2016.3.10

import java.util.Random;
public class CalculateOfFour_1
{

public static void main(String[] args) 
{
    // TODO Auto-generated method stub
    int a;
    Random rand1 = new Random();  
    a = rand1.nextInt(99)+0;
    
    int b;
    Random rand2 = new Random();  
    b = rand2.nextInt(99)+0;
    
    int c;
    Random rand3 = new Random();  
    c = rand3.nextInt(4);
    
    switch(c)
    {
        case(0):
        {
            System.out.print(a);
            System.out.print('+');
            System.out.print(b);
            System.out.println("    ");break;
        }
        case(1):
        {
            System.out.print(a);
            System.out.print('-');
            System.out.print(b);
            System.out.println("    ");break;

        }
        case(2):
        {                   
            System.out.print(a);
            System.out.print('*');
            System.out.print(b);
            System.out.println("    "); break;
        }
        case(3):
        {
            System.out.print(a);
            System.out.print('/');
            System.out.print(b);
            System.out.println("    ");break;
        }
    }
}

}

第二版源程序(2016.3.15 13:29)

//四则运算 初始版本(不管任何条件,只是生成两个数和一个符号) 出现的问题:忘记加break,随机数的表示
//毛雯雯20143066 2016.3.10
//进一步版本(添加循环,改善显示的结果的视觉效果(每五行换行),减数大于被减数,分母不为零,真分数的四则运算)
import java.util.Random;
public class CalculateOfFour_1
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
int i;
for(i=1;i<=30;i++)
{
两个整数生成///
//左边的数
int a;
Random rand1 = new Random();
a = rand1.nextInt(100)+0; //指0-99的数,包括0和99

        //右边的数
        int b;
        Random rand2 = new Random();  
        b = rand2.nextInt(100)+0;
        /整数生成/
        
        真分数生成/
        
        //分子
        int x;
        Random rand4 = new Random();  
        x = rand4.nextInt(100)+0;
        
        //分母
        int y;
        Random rand5 = new Random();  
        y = rand5.nextInt(100)+1;
        
        if(x>y)
        {
            int r;
            r = x;
            x = y;
            y = r;
        }
        for(int j=2;j<=x;j++)
        {
            if(x%j==0&&y%j==0)
            {
                x = x/j;
                y = y/j;
            }   
        }
        
        //分子
        int p;
        Random rand6 = new Random();  
        p = rand6.nextInt(100)+0;
        
        //分母
        int q;
        Random rand7 = new Random();  
        q = rand7.nextInt(100)+1;
        
        if(p>q)
        {
            int r;
            r = p;
            p = y;
            q = r;
        }
        for(int j=2;j<=p;j++)
        {
            if(p%j==0&&q%j==0)
            {
                p = p/j;
                q = q/j;
            }   
        }
        真分数生成/
        
        //整数和真分数的选择
        int t;
        Random rand8 = new Random();  
        t = rand8.nextInt(5);
        
        //符号
        int c;
        Random rand3 = new Random();  
        c = rand3.nextInt(4);
      
        if(t!=0)
        {
            switch(c)
            {
                case(0):
                {
                    System.out.print(a);
                    System.out.print('+');
                    System.out.print(b);
                    System.out.println("=   ");break;
                }
                case(1):
                {
                    if(a<b)
                    {
                        int d;
                        d = a;
                        a = b;
                        b = d;
                    }              //防止小学生不会算负数而添加的六行代码,若无需此段代码,可注释掉
                    System.out.print(a);
                    System.out.print('-');
                    System.out.print(b);
                    System.out.println("=   ");break;
                }
                case(2):
                {                   
                    System.out.print(a);
                    System.out.print('*');
                    System.out.print(b);
                    System.out.println("=   "); break;
                }
                case(3):
                {
                    while(b==0)
                        b = rand2.nextInt(100)+0; // 保证分母不为零
                    System.out.print(a);
                    System.out.print('/');
                    System.out.print(b);
                    System.out.println("=   ");break;
                }
            }
            if(i%5==0)
                System.out.println();
        }
        else
        {
            switch(c)
            {
                case(0):
                {
                    System.out.print(x);
                    System.out.print('/');
                    System.out.print(y);
                    System.out.print('+');
                    System.out.print(p);
                    System.out.print('/');
                    System.out.print(q);
                    System.out.println("=   ");break;
                }
                case(1):
                {
                    if(a<b)
                    {
                        int d;
                        d = a;
                        a = b;
                        b = d;
                    }              //防止小学生不会算负数而添加的六行代码,若无需此段代码,可注释掉
                    System.out.print(x);
                    System.out.print('/');
                    System.out.print(y);
                    System.out.print('-');
                    System.out.print(p);
                    System.out.print('/');
                    System.out.print(q);
                    System.out.println("=   ");break;
                }
                case(2):
                {                   
                    System.out.print(x);
                    System.out.print('/');
                    System.out.print(y);
                    System.out.print('*');
                    System.out.print(p);
                    System.out.print('/');
                    System.out.print(q);
                    System.out.println("=   "); break;
                }
                case(3):
                {
                    while(b==0)
                        b = rand2.nextInt(100)+0; // 保证分母不为零
                    System.out.print(x);
                    System.out.print('/');
                    System.out.print(y);
                    System.out.print(' ');
                    System.out.print('/');
                    System.out.print(' ');
                    System.out.print(p);
                    System.out.print('/');
                    System.out.print(q);
                    System.out.println("=   ");break;
                }
            }
            if(i%5==0)
                System.out.println();
            
        }
    }
    
}

}
第二版改善(2016.3.15 21:54)
//四则运算 初始版本(不管任何条件,只是生成两个数和一个符号) 出现的问题:忘记加break,随机数的表示
//毛雯雯20143066 2016.3.10
//进一步版本(添加循环,改善显示的结果的视觉效果(每五行换行),减数大于被减数,分母不为零,真分数的四则运算)
import java.util.Random;
public class CalculateOfFour_1
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
int i;
for(i=1;i<=10000;i++)
{
两个整数生成///
//左边的数
int a;
Random rand1 = new Random();
a = rand1.nextInt(100)+0; //指0-99的数,包括0和99

        //右边的数
        int b;
        Random rand2 = new Random();  
        b = rand2.nextInt(100)+0;
        /整数生成/
        
        真分数生成/
        
        //分子
        int x;
        Random rand4 = new Random();  
        x = rand4.nextInt(100)+1;
        
        //分母
        int y;
        Random rand5 = new Random();  
        y = rand5.nextInt(100)+1;
        
        if(x>y)
        {
            int r;
            r = x;
            x = y;
            y = r;
        }
        if(x==1&&y==1)
        {
            y=y+1;
        }
        
        for(int j=2;j<=x;j++)
        {
            if(x%j==0&&y%j==0)
            {
                x = x/j;
                y = y/j;
                j = 1;
            }
        
        }
        
        
        //分子
        int p;
        Random rand6 = new Random();  
        p = rand6.nextInt(100)+1;
        
        //分母
        int q;
        Random rand7 = new Random();  
        q = rand7.nextInt(100)+1;
        
        if(p>q)
        {
            int r1;
            r1 = p;
            p = q;
            q = r1;
        }
        if(p==1&&q==1)
        {
            q=q+1;
        }

        for(int j=2;j<=p;j++)
        {
            if(p%j==0&&q%j==0)
            {
                p = p/j;
                q = q/j;
                j = 1;
            }
        }
        
        
        真分数生成/
        
        //整数和真分数的选择
        int t;
        Random rand8 = new Random();  
        t = rand8.nextInt(5);
        
        //符号
        int c;
        Random rand3 = new Random();  
        c = rand3.nextInt(4);
      
        if(t==0)
        {
            switch(c)
            {
                case(0):
                {
                    System.out.println(a+"+"+b+"=   ");break;
                }
                case(1):
                {
                    if(a<b)
                    {
                        int d;
                        d = a;
                        a = b;
                        b = d;
                    }              //防止小学生不会算负数而添加的六行代码,若无需此段代码,可注释掉
                    System.out.println(a+"-"+b+"=   ");
                    break;
                }
                case(2):
                {                   
                    System.out.println(a+"*"+b+"=   "); break;
                }
                case(3):
                {
                    while(b==0)
                        b = rand2.nextInt(100)+0; // 保证分母不为零
                    System.out.println(a+"/"+b+"=   ");break;
                }
            }
            if(i%5==0)
                System.out.println();
        }
        else
        {
            switch(c)
            {
                case(0):
                {
                    System.out.println(x+"/"+y+"+"+p+"/"+q+"=   ");
                    break;
                }
                case(1):
                {
                    if(a<b)
                    {
                        int d;
                        d = a;
                        a = b;
                        b = d;
                    }              //防止小学生不会算负数而添加的六行代码,若无需此段代码,可注释掉
                    System.out.println(x+"/"+y+"-"+p+"/"+q+"=   ");break;
                }
                case(2):
                {                   
                    System.out.println(x+"/"+y+" "+"*"+" "+p+"/"+q+"=   ");break;
                }
                case(3):
                {
                    while(b==0)
                        b = rand2.nextInt(100)+0; // 保证分母不为零
                    System.out.println(x+"/"+y+" "+"/"+" "+p+"/"+q+"=   ");break;
                }
            }
            if(i%5==0)
                System.out.println();
            
        }
    }
    
}

}

三:运行结果截图
第一版的截图
753611-20160310142134038-2123426920.png
第二版的截图
753611-20160315133042693-2122933594.png
第二版改善的截图
753611-20160315215433131-574395957.png

四:分析一下个人上课未按时完成的原因
这里应该是要解释一下课下没有及时完成的原因了,由于自己对编程的不那么热爱和自己的各种借口,把最简单的第一版本拖延到了交作业的当天,不仅如此,打开JAVA之后,发现自己什么都不会了。不过,经过这次“都忘了”的体验,下次会及时完成作业的!而且是尽早。
问题:第二版中,对什么时候产生整数运算和真分数运算的循环控制的不是很好。
第二版改善中,将真分数彻底弄对了!!!!

转载于:https://www.cnblogs.com/justmaomao/p/5261762.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值