• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
时针后的沉沦
博客园    首页    新随笔    联系   管理    订阅  订阅

第二次结对作业

四则运算生成器——驾驶员


一、题目以及要求:

能够自动生成四则运算练习题
可以定制题目数量
用户可以选择运算符
用户设置最大数(如十以内、百以内等)
用户选择是否有括号、是否有小数
用户选择输出方式(如输出到文件、打印机等)
最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)


二、部分函数代码及功能:

1.设置静态变量:

static int TMNumber;              //题目数量
	static int f;                           //判断符号(0表示只有+、-,1表示只有*、/,2表示运算混合)
	static int MaxNumber;			//计算的最大值
	static int k;							//判断是否有(  )
	static int x;								//判断是否有小数
	static int p;							//判断输出方式

2.用户自定义功能函数:

	public static void USERSet() {
		System.out.println("请决定出题数:");
		Scanner in=new Scanner(System.in);
		TMNumber=in.nextInt();
		System.out.println("请输入0或1决定数学题所含有的符号(0表示只有+、-,1表示还有*、/):");
		f=in.nextInt();
		System.out.println("请决定运算的最大值不超过多少:");
		MaxNumber=in.nextInt();
		System.out.println("请输入0或1来决定算式中是否含有()1代表有,0代表无:");
		k=in.nextInt();
		System.out.println("请输入0或1来决定算式中是否含有小数,1代表有,0代表无:");
		x=in.nextInt();
		System.out.println("请输入0或1来决定输出方式  1代表输出到文件,0代表输出到打印机: ");		
		p=in.nextInt();
	}

3.生成随机整数函数:

//生成随机整数
public static int CreateZSJS() {
		Random r=new Random();
		int x=r.nextInt(MaxNumber);
		return x;
	}

4.生成随机浮点数函数:

//生成随机浮点数
	public static float CreateXSJS() {
		Random r=new Random();
		float x=r.nextFloat();
		return x;
	}

5.生成随机符号函数:

public static char CreateFH(){
		Random r=new Random();
	 	int x=r.nextInt(3);                           				
	 	char y =0;
		if(f==0&&x==0)
			 y = '+';
		if(f==0&&x==1)
			y='-';
		if(f==1&&x==0)
			y='+';
		if(f==1&&x==1)
			y='-';
		if(f==1&&x==2)
			y='*';
		if(f==1&&x==3)
			y='/';
		if(y==0)
		{
			return CreateFH();
		}
		else
			return y;
	 	}

6.生成运算式函数 既主函数:

	//生成运算式
	public static void main(String[] args) {
		StringBuilder bf=new StringBuilder();					//创建个字符串生成器
		USERSet();
		int i;
		for(i=0;i<TMNumber;i++)
		{
			bf.append(i+1);
			bf.append(':');
			bf.append('\t');
			if(k==0)
			{
				if(x==0)
				{
					bf.append(CreateZSJS());
					bf.append( CreateFH() );
					bf.append( CreateZSJS() );
					bf.append( CreateFH() );
					bf.append( CreateZSJS() );
					bf.append('=');
					bf.append('\n');
				}
				else
				{
					bf.append( CreateXSJS() );
					bf.append( CreateFH() );
					bf.append( CreateXSJS() );
					bf.append( CreateFH() );
					bf.append( CreateXSJS() );
					bf.append('=');
					bf.append('\n');
				}
			}
			else
			{
				Random r=new Random();
				int j=r.nextInt(2);
				if(j==0)
				{
					if(x==0)
					{
						bf.append( '(' );
						bf.append( CreateZSJS() );
						bf.append( CreateFH() );
						bf.append( CreateZSJS() );
						bf.append( ')' );
						bf.append( CreateFH() );
						bf.append( CreateZSJS() );
						bf.append('=');
						bf.append('\n');
					}
					else
					{
						bf.append( '(' );
						bf.append( CreateXSJS() );
						bf.append( CreateFH() );
						bf.append( CreateXSJS() );
						bf.append( ')' );
						bf.append( CreateFH() );
						bf.append( CreateXSJS() );
						bf.append('=');
						bf.append('\n');
					}
				}
				if(j==1)
				{
					if(x==0)
					{
						bf.append( CreateZSJS() );
						bf.append( CreateFH() );
						bf.append( '(' );
						bf.append( CreateZSJS() );
						bf.append( CreateFH() );
						bf.append( CreateZSJS() );
						bf.append( ')' );
						bf.append('=');
						bf.append('\n');
					}
					else
					{
						bf.append( CreateXSJS() );
						bf.append( CreateFH() );
						bf.append( '(' );
						bf.append( CreateXSJS() );
						bf.append( CreateFH() );
						bf.append( CreateXSJS() );
						bf.append( ')' );
						bf.append('=');
						bf.append('\n');
					}
				}
			}
		}
		if(p==0)
		{
			System.out.println(bf.toString());
		}
		else
		{
			File file = new File("d:/SZYS.txt");
			try {																				//将结果输入到文件中
				FileOutputStream out = new FileOutputStream(file);
				String s=bf.toString();
				out.write(s.getBytes());
				out.close();
			} catch(Exception e){
				e.printStackTrace();
			}
			try {																				//将结果从文件中输出
				FileInputStream in = new FileInputStream(file);
				byte byt[] = new byte[1024];
				int len = in.read(byt);
				System.out.println("文件中信息:" +'\n'+ new String(byt,0,len));
				in.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

羞羞的工作照·····

三、代码总结及领航员点评:

说实话看到本次作业发布的时候感觉稍微有点点难度,当然我指的UI界面的地方,而且觉得有点繁琐,最近学院工作上也忙的有点焦头烂额,所以就没考虑UI界面,当然这仅仅是为我个人节省一下时间,如果过后有时间的话我会将这个代码的UI界面再写一下,那么接下来开始说代码吧,这次的作业呢我用了三个子函数分别来生成随机的数字和符号,当然并不是大家认为的那种随机,在此之间我用了用户自定义函数来确定所生成算式的条件——有无()小数乘除法等,这样的话我可以在主函数中直接生成算式,然后可以直接输出,刚开始想直接输出到打印机算了(因为不知道怎么一步一步输出到文件里,C语言会文件JAVA也学过,只不过都是直接输出到文件里,一个一个输入的话代码量会翻倍),这方面我的领航员——白璐同学给了我很大帮助,给了我一些可行的建议,让我使用字符串生成器,然后再结尾多加一部分判断输出方式的代码,就可以一次性输出到文件或者打印机上,经过她的指点与我的尝试,结果经形成了现在的代码,不得不说白璐同学是一个很好的搭档,她会在你没有什么方法,思路走到尽头的时候,给你另辟蹊径的方法。非常感谢!!!!有机会在合作,也期望着再次合作<微笑脸>

领航员——白璐博客地址

代码地址

posted @ 2018-04-14 22:06  时针后的沉沦  阅读(187)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3