一个简单的加减乘除自动生成小程序升级版(JAVA)

  1 import java.util.Scanner;
  2 public class Suan {
  3     public static void main(String[] args) {
  4         int []b;//设置数组来存放随机产生数
  5         b=new int [4];
  6         Scanner in=new Scanner(System.in);
  7         System.out.println("请选择你想练习的题型:");
  8         System.out.println(" 1、分数的加减乘数法练习!");
  9         System.out.println(" 2、整数的加减乘数法练习!");
 10         int xuanze=in.nextInt();
 11         System.out.println("你想输出四则运算的个数是:");
 12         int num=in.nextInt();
 13         String []a={"+","-","*","/"};//整数运算存放符号的数组
 14         String res,res1 = null, sum1=null;//res为你输入的答案,res1为分数运算和整数运算除法中的正确答案
 15         int []c;//符号的代数
 16         int j=0,sum2=0;//sum2为整数运算中加减除的用户输入答案
 17         int rshu = 0;//用户计算正确数
 18         c=new int [4];
 19         if(1==xuanze)//选择应该输出怎样类型的算式
 20         {
 21         for(int i=0;i<4;i++)//产生符号的代数
 22         {
 23             c[i]=(int)(Math.random()*14/3);
 24         }
 25         for( j=0;j<num;j++)//不够num个数就继续输出算式
 26         {
 27         for(int i=0;i<4;i++)//产生1到10的随机数
 28         {
 29             b[i]=(int)( Math.random()*10);
 30         }
 31
 32         if(b[0]>b[1]&&b[2]>b[3]&&b[0]!=0&&b[1]!=0&&b[2]!=0&&b[3]!=0)//真分数的前提
 33             {
 34                System.out.println("("+b[1]+"/"+b[0]+")"+  a[c[0]]+"("+   b[3]+"/"+b[2]+")");
 35                System.out.print("你的答案是:");
 36                res=in.next();
 37               switch(c[0]){//调用成员方法计算
 38                      case 0:res1=fracAdd(b[1],b[0],b[3],b[2]);break;
 39                      case 1:res1=fracSub(b[1],b[0],b[3],b[2]);break;
 40                      case 2:res1=fracMul(b[1],b[0],b[3],b[2]);break;
 41                      case 3:res1=fractDiv(b[1],b[0],b[3],b[2]);break;
 42                           }
 43               if(!res.equals(res1))//比较答案
 44               {
 45                   System.out.println("你的答案错误!正确答案为:"+res1);
 46               }
 47               else
 48               {
 49                   rshu++;//用户计算正确数
 50               }
 51             }
 52         else
 53             j--;
 54         }
 55         }
 56         if  (2==xuanze)//选择整型数算式
 57         {
 58
 59             for( int r=0;r<num;r++)//不够num个数就继续输出算式
 60             {
 61                 int sum = -1;//真正的结果
 62             for(int i=0;i<4;i++)
 63             {
 64                 b[i]=(int)( Math.random()*100);
 65             }
 66             for(int i=0;i<4;i++)
 67             {
 68                 c[i]=(int)(Math.random()*14/3);
 69             }
 70             switch(c[0])//判断应该用什么符号
 71             {
 72             case 0 :
 73             case 1 :sum=b[0]+b[1];break;
 74             case 2 :sum=b[0]-b[1];break;
 75             case 3 :sum=b[0]*b[1];break;
 76             case 4 : sum1=fractDiv2(b[0],b[1]);break;//除号时调用函数,结果显示分数
 77             }
 78                 /*if(sum<0)//减法计算结果不能为0
 79                 {
 80                     j--;
 81                 }*/
 82                 if(c[0]==4)//如果符号是除号时
 83                 {
 84                     System.out.println(b[0]+a[c[0]-1]+b[1]+"=");
 85                     System.out.print("你的答案是:");
 86                        res=in.next();
 87                        if(!res.equals(sum1))
 88                           {
 89                               System.out.println("你的答案错误!正确答案为:"+sum1);
 90                           }
 91                        else
 92                            rshu++;
 93                 }
 94                 else//如果符号不是除号时
 95                 {
 96                     System.out.println(b[0]+a[c[0]-1]+b[1]+"=");
 97                     System.out.print("你的答案是:");
 98                     sum2=in.nextInt();
 99                     if(sum2!=sum)
100                       {
101                           System.out.println("你的答案错误!正确答案为:"+sum);
102                       }
103                    else
104                        rshu++;
105                     //System.out.println(sum);
106                 }
107                 System.out.println(r);
108
109             }
110         }
111         else
112         {}
113         System.out.println("你一共答对了"+rshu+"道题");
114
115     }
116     static String fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
117         //分数加法
118         //需要调用求最大公约数的函数
119
120         int denominator;  //分子
121         int numerator;  //分母
122
123         if(first_denominator==second_denominator)  //分母相同时加分子
124         {
125              denominator=first_denominator;
126              numerator=first_numerator+second_numrator;
127         }
128         else  //否则同分比较分子
129         {
130             denominator=first_denominator*second_denominator;
131             numerator=first_numerator*second_denominator+first_denominator*second_numrator;
132         }
133         int gcd = gcd(numerator,denominator);  //调用gcd方法约分
134         denominator = denominator / gcd;
135         numerator = numerator / gcd;
136         if(0==denominator/numerator)
137         {
138             String res="0";
139             return res;
140         }
141         else
142         {
143         String zi1=String.valueOf(numerator);//把结果转换成字符串输出
144         String zi2=String.valueOf(denominator);//把结果转换成字符串输出
145         String zi3="/";//把结果转换成字符串输出
146         String res2=zi1+zi3+zi2;//把结果转换成字符串输出
147
148         return res2; }
149
150     }
151      static String fracSub(int first_numerator,int first_denominator,int second_numrator,int second_denominator){
152
153             //需要调用求最大公约数的函数
154
155             int denominator;
156             int numerator;
157
158             if(first_denominator==second_denominator)  //分母相同时加分子
159             {
160                  denominator=first_denominator;
161                  numerator=first_numerator-second_numrator;
162             }
163             else  //否则同分比较分子
164             {
165                 denominator=first_denominator*second_denominator;
166                 numerator=first_numerator*second_denominator-first_denominator*second_numrator;
167             }
168             int gcd = gcd(numerator,denominator);
169             denominator = denominator / gcd;
170             numerator = numerator / gcd;
171             if(0==denominator/numerator)
172             {
173                 String res="0";
174                 return res;
175             }
176             else
177             {
178             String zi1=String.valueOf(numerator);
179             String zi2=String.valueOf(denominator);
180             String zi3="/";
181             String res2=zi1+zi3+zi2;
182             return res2;   }
183
184         }
185         static String fracMul(int first_numerator,int first_denominator,int second_numerator,int second_denominator){
186
187             //需要调用求最大公约数的函数
188             int denominator;
189             int numerator;
190
191
192                 denominator=first_denominator*second_denominator;
193                 numerator=first_numerator*second_numerator;
194
195             int gcd = gcd(numerator,denominator);
196             denominator = denominator / gcd;
197             numerator = numerator / gcd;
198             if(0==denominator/numerator)
199             {
200                 String res="0";
201                 return res;
202             }
203             else
204             {
205             String zi1=String.valueOf(numerator);
206             String zi2=String.valueOf(denominator);
207             String zi3="/";
208             String res2=zi1+zi3+zi2;
209             return res2;      }
210
211         }
212         static String fractDiv(int first_numerator,int first_denominator,int second_numerator,int second_denominator){
213
214             //需要调用求最大公约数的函数
215
216             int denominator;
217             int numerator;
218
219             numerator = first_numerator*second_denominator;
220             denominator = first_denominator*second_numerator;
221
222
223
224             int gcd = gcd(numerator,denominator);
225             denominator = denominator / gcd;
226             numerator = numerator / gcd;
227             String zi1=String.valueOf(numerator);
228             String zi2=String.valueOf(denominator);
229             String zi3="/";
230             String res2=zi1+zi3+zi2;
231             return res2;
232
233         }
234         static String fractDiv2(int first,int second){
235
236             //需要调用求最大公约数的函数
237             int denominator= first;
238             int numerator= second;
239             int gcd = gcd(numerator,denominator);
240             denominator = denominator / gcd;
241             numerator = numerator / gcd;
242             String zi1=String.valueOf(numerator);
243             String zi2=String.valueOf(denominator);
244             String zi3="/";
245             String res2=zi1+zi3+zi2;
246             return res2;
247         }
248     static int gcd(int x,int y){  //利用辗转相除法求最大公约数
249         int r;
250            while( y!= 0)
251            {
252                r = x%y;
253                x = y;
254                y = r;
255            }
256        return x;
257
258    }
259
260
261 }

运行结果:

         

感想:用了四个小时左右把原来的那个作业一修改成可以自动生成分数加减乘除的算法,虽然还不太完善,但是,基本功能还是实现了。感觉很开心

注:昨天下午已经把程序写好,只是学校网络一直上传不了程序,今天没办法,只能用手机开WiFi电脑连然后发布!T_T

时间: 2024-10-13 12:59:02

一个简单的加减乘除自动生成小程序升级版(JAVA)的相关文章

一个简单的计算分数的小程序

一个简单的计算分数的小程序 代码如下: package Day05; public class ExamGradeDemo { public static void main(String[] args) { char[][] answers = { {'C','B','D','C','A','A','D','C','D','C'}, {'A','C','B','D','C','A','D','C','B','D'}, {'A','C','B','D','B','D','C','A','A','

go语言实现一个简单的登录注册web小程序

最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣.根据<go web编程>中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜: 这个例子使用到了beego框架和beedb框架,如果是go新手beego和beedb得自己去google下载安装. 目录结构: index.go package controllers import ( "fmt" "github.com/astaxie/beego"

Socket 通讯,一个简单的 C/S 聊天小程序

Socket,这玩意,当时不会的时候,抄别人的都用不好,简单的一句话形容就是“笨死了”:也是很多人写的太复杂,不容易理解造成的.最近在搞erlang和C的通讯,也想试试erlang是不是可以和C#简单通讯,就简单的做了些测试用例,比较简单,觉得新手也可以接受. 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.

完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能

#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input("please input a number:"))except ValueError: print("第一个运算数字输入非数字") try: b=int(raw_input("please input another number:"))except Val

Spring学习(二)——使用用Gradle构建一个简单的Spring MVC Web应用程序

1.新建一个Gradle工程(Project) 在新建工程窗口的左侧中选择 [Gradle],右侧保持默认选择,点击next,模块命名为VelocityDemo. 2.在该工程下新建一个 module,在弹出的窗口的左侧中选择 [Gradle],右侧勾选[Spring MVC],如下图所示: 并勾选[Application server],下方选择框中选择Tomcat7.0,如无该选项,则选中右边的 [ New... ] -- [ Tomcat Server ], 配置 Tomcat .配置好后

[软件测试学习]考虑到测试的代码编写/int.parse的非法输入—由一个简单的c#闰年检测程序说起

一个简单的C#的闰年检测程序 1.闰年检测的函数编写 当提起检测平年闰年时候,第一反应写出的代码 1 public static bool isLeapYear(int year){ 2 return ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)) 3 } 但是这个并不易于测试和出现错后的修改,更改代码如下 1 public static bool isLeapYear(int year){ 2 bool check = ne

自动生成应用程序

@echo off :: 自动生成服务端,目地是生成订单的服务端程序,服务端程序布置在本机的IIS上 :: 2014/7/29 :: dev环境调用,路径path在新的环境中可能需要修改 "D:\program files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv" "D:\WorkPlace\SVN\trunk\Backend\JinRi.Air\JinRi.Air.WcfServiceHost\WcfSer

php一个利用cookie限时发帖的小程序

/* * _timed()用来限制时间,如发帖限制 * @access public 表示函数对外公开 * @param $_now_time 现在时间 * @param $_pre_time 要对比的时间 * @param $_time 限制时间 * @param $_string 要提示的字符 * @return $_now_time-$_pre_time 表示返回过了多少秒 * */ function _timed($_now_time,$_pre_time,$_time,$_string

PHP生成小程序二维码

/** * [生成小程序二维码] * @return [type] [description] */ public function makeMiniQrcode_do() { begin: $id = input('id');// 获取token $ACCESS_TOKEN = $this->getAccesstoken(); // 准备进入小程序的参数 $param = json_encode(array("path" => "pages/shop/shop?