软件工程个人作业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();
			
		}
	}
	
}

}

三:运行结果截图
第一版的截图

第二版的截图

第二版改善的截图

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

原文地址:https://www.cnblogs.com/justmaomao/p/5261762.html