基本构想

我的想法是用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道算术题相关推荐

  1. 哈尔滨工业大学hit软件构造实验lab1

    文章目录 1 实验目标概述 2 实验环境配置 3 实验过程 3.1 Magic Squares 3.1.1 isLegalMagicSquare() 3.1.2 generateMagicSquare ...

  2. osgi框架和spring区别_最新100道大厂高频spring面试题附答案

    简介 这里是由多位互联网大厂架构师面试整理的出现频率最高的spring相关面试题,并为大家整理了完整的答案,赶紧收藏起来吧! 100道spring高频面试题 Spring概览 1.Spring是什么? ...

  3. 【JAVA Core】精品面试题100道

    [JAVA Core]精品面试题100道 加个说明:我的初心是Java每个技术栈整理个100道面试题,现在的底子是哪吒的<208道面试题> 后续我会把自己有价值的题和面试真题添加进入,也对 ...

  4. 100道经典Hadoop常见面试/笔试题及答案解析

    100道常见Hadoop面试/笔试题,都是带有答案解析的哦,各类题型都有,单选题.多选题.判断题和简单题,这是第一版,下周推出第二版,将会加入更多面试/笔试题. 1 单选题 1.1 下面哪个程序负责 ...

  5. 100道SEO问题解答汇总

    刚开始做网站的朋友都会接触到一个关键词:SEO(搜索引擎优化),希望通过SEO优化自己的网站,提高网站排名,增加访问量. 下面汇总了大家经常遇到的100道SEO问答. 1.百度每更新一次,网站的收录就 ...

  6. 3w字 长文干货!100 道 Linux 常见面试题

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 本文一共 3W + 字,分别从 Linux概述.磁盘.目录.文件.安全.语法级.实战.文件管理 ...

  7. 100 道常见 Hadoop 面试题及答案解析

    100 道常见 Hadoop 面试题及答案解析 目录 1 单选题 ................................................................... ...

  8. 互联网公司笔试-逻辑推理题及解答【精选100道】

    互联网公司笔试-逻辑推理题及解答[精选100道] [1]假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 由满6向空5倒,剩1升, ...

  9. 计算机应用基础的填空试题及答案,计算机应用基础试题及答案(填空题100道)2#严选材料...

    <计算机应用基础试题及答案(填空题100道)2#严选材料>由会员分享,可在线阅读,更多相关<计算机应用基础试题及答案(填空题100道)2#严选材料(14页珍藏版)>请在人人文库 ...

最新文章

  1. linux之父密码,Linux之父十大名言
  2. 扫盲:关于Android手机内存ROM、RAM还有SD卡的解释
  3. ie在线邮件html编辑器,IE中HTML编辑器的修改与使用.doc
  4. db2表结构导出导入,数据库备份
  5. zookeeper环境搭建以及测试
  6. SP5971 LCMSUM - LCM Sum
  7. 线程池的使用以及其工具类的封装
  8. 参考文献中英文人名_参考文献中英文人名的缩写规则
  9. 2021年“泰迪杯”数据分析技能赛A题
  10. 如何用pe备份linux系统盘,使用轻松备份创建可启动光盘或U盘
  11. [矩阵论] 上三角阵的逆(如果有)则也是上三角阵
  12. mysql查询周数_MySQL根据年份的周数获取该周起始时间
  13. python 应用程序无法正常启动 000007b_Win7应用程序无法正常启动0x000007b怎么办?...
  14. WordCloud词云图生成_示例
  15. 北京市财政局数据备份设备购置建设项目招标公告7,977,038.00万元
  16. manifest.json文件介绍
  17. 内嵌模式搭建Hive
  18. [阶段4 企业开发进阶] 5. Netty
  19. 高通平台camera客观项测试之色彩偏差白平衡饱和度
  20. 主要的几个脑网络——整理自eegfmri的博客

热门文章

  1. 微信小程序搜索关键词高亮效果(转)
  2. 安卓AutoCompleteTextView的简单使用(搜索时弹出可选择项)
  3. 「目前全网唯一2万字长文」从JS上下文到Chromium源码的极限拉扯!!兄弟姐妹们接好了!!...
  4. Python渗透测试之Scapy模块情报收集
  5. 头歌 MongoDB 文档的高级查询操作(全部关卡)
  6. pygame 学习笔记(7)添加一个精灵:坦克的移动和旋转
  7. 求解数独的C++实现
  8. @vaild校验参数
  9. 渗透测试人员常用的8种火狐插件
  10. MySQL 生成指定长度的随机字符串