四则运算题目生成程序(基于控制台)

基于控制台的四则运算

 


 

代码地址


a.需求分析

    1. 运算符为 +, −, ×, ÷
    2. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    3. 要求能处理用户输入的真分数, 如 1/2, 5/12 等
    4. 并且要求能处理用户的输入,并判断对错,打分统计正确率。

          b.功能设计

    1. 基本功能   通过从控制台随机的得到整数和真分数的四则运算,然后根据控制台输入的结果判断对错,给出正确率
    2. 扩展功能   希望改进代码可以实现带括号的复合运算(未完成)

 

        c.设计实现 

         一个测试类class Test 用来检测程序的正常运行

          一个整数类class zhengshu  里面有一个方法jisuan()用来实现整数的四则运算

          一个分数类class Fracetion 有Numerator,Denominator,fraction用来表示分子,分母和分数,然后包含了getter()方法和构建分数的方法creatfraction()

          一个分数的方法类class Mathod 里面有三个分数四则运算时要用到的方法 求最大公约数getGCD(int i,int j)约分重构分数           Reduction(int i,int j)和判断正错compare(String a, String b)

          一个分数的四则运算法则类class Calculate 里面包含四个方法,分别是加减乘除

          一个分数计算类class fenshu 里面包含一个计算方法jisuan()用来随机选择计算符号,然后判断正误

          关系:测试类只要调用class zhenghsu和class fenshu中的jisuan()方法即可测试;class Calculate需要import Fraction类和Mathod,Fraction类也import了Mathod类


 

        d.代码说明

      • 真分数的生成
 1 public String creatfraction() //创建分数并且化为最简
 2         {
 3             int i, j;
 4             Numerator = 1+(int) (Math.random() * 10);
 5             Denominator = 2+(int) (Math.random() * 10);
 6             i = Numerator;
 7             j = Denominator;
 8             j = Mathod.getGCD(i, j);
 9             Numerator = Numerator / j;
10             Denominator = Denominator / j;
11             fraction = Mathod.Reduction(Numerator, Denominator);
12             return fraction;
13 
14         }
      • Mathod类中的方法
 1 static int getGCD(int i, int j) //求最大公约数 辗转相除法。
 2     {
 3         int temp;
 4         while (i % j != 0) {
 5             temp = i % j;
 6             i = j;
 7             j = temp;
 8         }
 9         return j;
10     }
11     
12     static String Reduction(int i, int j) //约分,化为最简。
13     {
14         String k;
15         if (j == 1) {
16             k = i + "";
17         } else {
18             k = (i) + "" + "/" + (j) + "";
19         }
20         return k;
21     }
22     
23     static boolean compare(String a, String b) //比较输入值与答案,返回值为boolean类型。
24     {
25         if (a.equals(b))
26             {System.out.println("回答正确");
27             return true;}
28         else
29             {
30             System.out.println("回答错误,正确答案是" + b);
31             return false;
32             }
33     }
      • 真分数的四则运算(以加法为例,其余雷同)
 1 public String add(Fraction a, Fraction b) //加法 参考分数间加减乘除 用四个变量表示两个分数的分子分母
 2     {
 3         int i, j, k, s, m, n, p;
 4         i = a.getNumerator();// 分子
 5         j = a.getDenominator();// 分母
 6         k = b.getNumerator();
 7         s = b.getDenominator();
 8         m = i * s + j * k;
 9         n = s * j;
10         p = Mathod.getGCD(m, n);
11         return Mathod.Reduction(m / p, n / p);
12 
13     }

        e.测试运行

 


        PSP


 

PSP2.1Personal Software Process StagesEstimated time(min)actual time(min)
Planning计划1210
· Estimate估计这个任务需要多少时间120115
Development开发8090
· Analysis需求分析 (包括学习新技术)1010
· Design Spec生成设计文档710
· Design Review设计复审65
· Coding Standard代码规范45
· Design具体设计3040
· Coding具体编码3540
· Code Review代码复审1015
· Test测试(自我测试,修改代码,提交修改)1515
Reporting报告2025
·测试报告55
·计算工作量47
·并提出过程改进计划44

         总结


 

     在做作业的时候,体会到了逻辑清晰是有多重要,不管编程能力怎么样,首先看见一道题目时不要急着就去做,想想如何做怎么做才是最重要的,如果逻辑清晰知道需要建几个类,每个类包含什么,每个类之间的关系是什么,就算个别方法不会写,大体的模子也能画出来,最后要就个别函数即可。下次我做作业的时候应该会多花时间在逻辑分析,流程图上。

 

 

 

 

转载于:https://www.cnblogs.com/sy0717/p/6512108.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(2306):react之组件使用

Home.js import React, {Component} from react;class Home extends Component {render() {return (<div><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2{parseInt(Math.random()*10)}</div></div>);} }export …

input的属性AutoComplete——关闭浏览器文本框自动提示

1. 有时候我们并不需要AutoComplete&#xff0c;例如需要用户自己再次输入而非自动完成。只要将所在表单元素的autocomplete属性设置为off即可。<form>请双击文本框 <input type"text" name"wd" autocomplete"off"> <input type&…

oracle过滤器基础,示例过滤器表达式 (Oracle Solaris Studio 12.2:性能分析器)

示例过滤器表达式本节介绍可通过 er_print -filters 命令以及在分析器过滤对话框中使用的过滤器表达式的示例。利用 er_print -filters 命令&#xff0c;过滤器表达式用单引号引起来&#xff0c;如下所示&#xff1a;er_print -filters FNAME("myfunc") SOME IN USTA…

前端学习(2306):react之组件使用之图片使用

Home.js import React, {Component,Fragment} from react; import ImgA from "../assset/index.jpg" class Home extends Component {render() {return (<Fragment><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2…

CodeJock 实现MFC换肤

Skin,Skin#64位编译的dll文件没有找到&#xff0c;也没有源码可以编译&#xff0c;最后找到了Codejock换肤的库&#xff0c;源码编译生成64位dll进行MFC换肤 安装Codejock后使用安装路径下的Deploy.exe选择生成64位对应的dll和lib&#xff0c;ToolkitPro1531vc100x64D.dll自动生…

css强制自动换行

table自动换行.table_autobr{ table-layout:fixed;}.table_autobr td,.table_autobr th{word-break : break-all;word-wrap : break-word ;}div自动换行div{white-space:normal; word-break:break-all; overflow:auto;}

php背景图添加字,怎样给视频后面加背景图 视频加背景图片并添加一行广告文字...

有不少广告小视频中&#xff0c;视频画面是一张海报背景图片&#xff0c;图片上显示一个小视频播放&#xff0c;并且在画面上还有显示一行广告字幕。这样的宣传视频制作其实蛮简单的&#xff0c;怎样给视频后面加背景图片的方法倒是挺多&#xff0c;要给视频加背景图片的同时还…

前端学习(2307):react之props和state

Home,js import React, {Component} from react; import News from "./News"; class Home extends Component {render() {return (<div>home<News name"你好"/></div>);} }export default Home; news,js import React, {Component} f…

css设置表格边框

table,td,th{border:1px solid #333;border-collapse:collapse;}border-collapse 属性设置表格的边框是否被合并为一个单一的边框&#xff0c;还是象在标准的 HTML 中那样分开显示。collapse为合并显示。

移动硬盘修复

修复损坏的盘区&#xff1a; CHKDSK G: /F /R 一个命令就搞定了&#xff0c;也是神奇 转载于:https://www.cnblogs.com/wancy86/p/chkdsk.html

oracle如何并发重建索引,oracle数据库如何重建索引?

【问题描述】oracle数据库表如何重建索引&#xff1f;【概述】请在Oracle数据库里面执行如下语句&#xff1a;declare v_table_name varchar(255):;v_index_name varchar(255):;cursor cur_tb is SELECT T.INDEX_NAME INDEXNAMEFROM USER_INDEXES TWHERE TEMPORARY NAND TAB…

前端学习(2308):react之子传父

Home,js import React, {Component} from react; import News from "./News"; class Home extends Component {constructor(props) {super(props);this.state{text:我是默认值}}dataFun(text)>{console.log(text)this.setState({text})}render() {return (<di…

table合并单元格宽度自适应

table中合并单元格导致的css样式不同处理方式&#xff1a;1.每行都拆成一个table。2.多设置几个单元格的宽度&#xff08;自适应失效、第一列都设置宽度也有可能失效&#xff09;。

linux 密码复杂度,用PAM 搞定Linux 平台密码复杂度问题

用PAM 搞定Linux 平台密码复杂度问题星期五, 十二月 27, 20130作为一个PAM的一个模块&#xff0c;pam_cracklib可以被用来检查密码是否违反密码字典&#xff0c;这个验证模块可以通过插入password堆栈&#xff0c;为特殊的应用提供可插入式密码强度性检测&#xff0c;能够很好地…

for循环,定时器,闭包混合一块的那点事。

1&#xff0c;对于一个基本的for循环&#xff0c;顺序输出变量值。 for(var i 1; i < 4; i){console.log(i);//结果不多说了吧} 2&#xff0c;如果for循环中有定时器&#xff0c;如下代码。 for (var i 1; i < 4; i) {setTimeout(function() {console.log(i);//3个4}, …

前端学习(2309):react之同级传值

Home,js import React, {Component} from react; import News from "./News"; class Home extends Component {constructor(props) {super(props);this.state{text:我是默认值}}dataFun(text)>{console.log(text)this.setState({text})}render() {return (<di…

ie6/7 position relative overflow

ie6/7父容器overflow:auto;子容器position:relative;时子容器下面超出的部分会显示在父容器的外边。解决办法&#xff1a;父容器也加position:relative

linux基于域的虚拟目录,RHELAS4.0 apache配置之我的小结(虚拟目录,虚拟主机)

说明一下几个基本的Listen 80ServerName localhost:80ServerAdmin rootlocalhostServerRoot /etc/httpd #apache运行所在目录DirectoryRoot /var/www/htmlOptions FollowSymLinksAllowOrride NoneOrder allow,denyAllow from all#在httpd.conf上打上这些是不能启动apache的&…

11.SolrJ索引操作

创建索引 说明&#xff1a;根据id&#xff08;唯一约束&#xff09;域来更新Document的内容&#xff0c;如果根据id值搜索不到id域则会执行添加操作&#xff0c;如果找到则更新。 public void testCreateIndex() throws SolrServerException, IOException { SolrServer solrSer…

common lisp 学习第四天 变量、宏

//变量//引入变量&#xff1a;变量作用域括号内(let ((x 10) (y 20) z)...)引入变量列表中的变量(let* ((x 10) (y ( x 10))...)//全局变量之前有没有值都可以赋值(defparameter *count*变量名0值"doc描述")变量未定以才可以赋值&#xff0c;也可以不给定值(defvar *…