软件构造作业——100道算术题
基本构想
我的想法是用map来哈希字符串,这样对每一个已经用过的算式进行散列标记,来达到去重的效果
要求
要求是低内聚高耦合,所以要写好几个类来进行封装,达到作用端口的多元化
co.java
package newp;import java.util.Scanner;public class co
{public static void main(String [] args) {make_st mm = new make_st();System.out.println("Please enter how many conut you want to practice:");Scanner cin = new Scanner(System.in);mm.n = cin.nextInt();System.out.println("Please enter what mode you want to try:");cin = new Scanner(System.in);mm.mode = cin.nextInt();mm.use();}
}
make_st.java
package newp;
import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
public class make_st
{int num=0; //记录对的题数目int n; //要出的题的数量int mode; //对应每个类的出题模式int cnt=0; //记录已经出题个数Map<String,Integer> map = new HashMap<String,Integer>(); // 建立哈希表panchong xx = new panchong();void use(){String s=""; //准备哈希字符串try (Scanner cin = new Scanner(System.in)) //异常尝试{while(cnt<n){int ran1 = (int) (Math.random()*100); //操作数1int ran2 = (int) (Math.random()*100); //操作数2int ran3 = (int) (Math.random()*3); //随即加减if(ran3==2&&ran1<ran2) //如果是减法而且第一个数小于第二个数continue;if(ran3==1&&ran1+ran2>100) //如果是加法而且第一个数+小于第二个数>100continue;if(ran3==1&&(mode == 0||mode == 2)){s=Integer.toString(ran1)+"+"+Integer.toString(ran2)+"=";if(xx.judge(s,map)) //如果算式不存在{System.out.println(s);int ans = cin.nextInt();if(ans == ran1+ran2)num++; //自加对题数目cnt++; //出题数自加}}if(ran3==2&&(mode == 1||mode == 2)){s=Integer.toString(ran1)+"-"+Integer.toString(ran2)+"=";if(xx.judge(s,map)){System.out.println(s);int ans = cin.nextInt();if(ans == ran1-ran2)num++; cnt++;}}}}System.out.print((double)(num*1.0/n)*100); //输出正确率System.out.println('%');}
}
panchong.java
package newp;
import java.util.Map;
class panchong
{boolean judge(String s,Map<String,Integer> map){if(map.get(s)==null&&s!=""){map.put(s,1); //建立映射return true;}return false;}
}
软件构造作业——100道算术题相关推荐
- 哈尔滨工业大学hit软件构造实验lab1
文章目录 1 实验目标概述 2 实验环境配置 3 实验过程 3.1 Magic Squares 3.1.1 isLegalMagicSquare() 3.1.2 generateMagicSquare ...
- osgi框架和spring区别_最新100道大厂高频spring面试题附答案
简介 这里是由多位互联网大厂架构师面试整理的出现频率最高的spring相关面试题,并为大家整理了完整的答案,赶紧收藏起来吧! 100道spring高频面试题 Spring概览 1.Spring是什么? ...
- 【JAVA Core】精品面试题100道
[JAVA Core]精品面试题100道 加个说明:我的初心是Java每个技术栈整理个100道面试题,现在的底子是哪吒的<208道面试题> 后续我会把自己有价值的题和面试真题添加进入,也对 ...
- 100道经典Hadoop常见面试/笔试题及答案解析
100道常见Hadoop面试/笔试题,都是带有答案解析的哦,各类题型都有,单选题.多选题.判断题和简单题,这是第一版,下周推出第二版,将会加入更多面试/笔试题. 1 单选题 1.1 下面哪个程序负责 ...
- 100道SEO问题解答汇总
刚开始做网站的朋友都会接触到一个关键词:SEO(搜索引擎优化),希望通过SEO优化自己的网站,提高网站排名,增加访问量. 下面汇总了大家经常遇到的100道SEO问答. 1.百度每更新一次,网站的收录就 ...
- 3w字 长文干货!100 道 Linux 常见面试题
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 本文一共 3W + 字,分别从 Linux概述.磁盘.目录.文件.安全.语法级.实战.文件管理 ...
- 100 道常见 Hadoop 面试题及答案解析
100 道常见 Hadoop 面试题及答案解析 目录 1 单选题 ................................................................... ...
- 互联网公司笔试-逻辑推理题及解答【精选100道】
互联网公司笔试-逻辑推理题及解答[精选100道] [1]假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 由满6向空5倒,剩1升, ...
- 计算机应用基础的填空试题及答案,计算机应用基础试题及答案(填空题100道)2#严选材料...
<计算机应用基础试题及答案(填空题100道)2#严选材料>由会员分享,可在线阅读,更多相关<计算机应用基础试题及答案(填空题100道)2#严选材料(14页珍藏版)>请在人人文库 ...
最新文章
- linux之父密码,Linux之父十大名言
- 扫盲:关于Android手机内存ROM、RAM还有SD卡的解释
- ie在线邮件html编辑器,IE中HTML编辑器的修改与使用.doc
- db2表结构导出导入,数据库备份
- zookeeper环境搭建以及测试
- SP5971 LCMSUM - LCM Sum
- 线程池的使用以及其工具类的封装
- 参考文献中英文人名_参考文献中英文人名的缩写规则
- 2021年“泰迪杯”数据分析技能赛A题
- 如何用pe备份linux系统盘,使用轻松备份创建可启动光盘或U盘
- [矩阵论] 上三角阵的逆(如果有)则也是上三角阵
- mysql查询周数_MySQL根据年份的周数获取该周起始时间
- python 应用程序无法正常启动 000007b_Win7应用程序无法正常启动0x000007b怎么办?...
- WordCloud词云图生成_示例
- 北京市财政局数据备份设备购置建设项目招标公告7,977,038.00万元
- manifest.json文件介绍
- 内嵌模式搭建Hive
- [阶段4 企业开发进阶] 5. Netty
- 高通平台camera客观项测试之色彩偏差白平衡饱和度
- 主要的几个脑网络——整理自eegfmri的博客