存在不知道是什么问题的程序

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

存在不知道是什么问题的程序的相关文章

一个实时获取股票数据的安卓应用程序

关键字:Stock,股票,安卓,Android Studio. OS:Windows 10. 最近学习Android应用开发,不知道写一个什么样的程序来练练手,正好最近股票很火,就一个App来实时获取股票数据,取名为Mystock.使用开发工具Android Studio,需要从Android官网下载,下载地址:http://developer.android.com/sdk/index.html.不幸的是Android是Google公司的,任何和Google公司相关的在国内都无法直接访问,只能

android 非root机器如何备份已安装程序的apk

问题描述 想做一个能够备份已安装程序的apk程序,不知道已经安装过的程序,系统有没有保留一份安装文件,如果有路径在哪里? 解决方案1 LZ注意了    系统是不会帮你备份的(除非系统程序烧到rom的) 不过你的apk如果是下载的,就会在sd卡上,不删除的话会在的,但是删了就没了 另外你说的已经安装的apk,会在data/app下,数据在data/data下,这个我觉得没root是操作不了这个文件的,当然这个需要验证

偶是一只别人眼里的程序猿

偶,是一只在IT界摸爬滚打了8年之久的程序猿,活在这个世上,难免会遇到这样活着那样的误解,包括偶的身份. 其实,很多人都不太清楚程序员的定义,弱弱的问我,到底啥子是程序猿腻? 此时,偶总是用娴熟的普通话suo,程序猿就si一种非常特叔的.可以从事程序开发.维护的动物(应该是哺乳动物). 在不同人的眼里,程序猿是具有不同的功能与特点的,总结如下: 第一类:电脑修理工 1.萌妹纸:程序猿哥哥,阔以给偶修修电脑吗? 标准解决办法:插上电源 2.老板:小程,叔的电脑卡住了,来看看 标准解决办法:重启 3

[应用实施工程师的迷茫]向往当个程序员,求资深人士指导

工作了两年,做些项目实施类的工作,从高性能HPC实施,到虚拟化实施,到存储实施,到数据库实施,到中间件实施,实施类的工作我真是做个遍了.但是我真的想做软件开发工程师,做程序员,从大学就有这个梦想. 现在我该如何才能转行到程序员呢,大家帮我分析一下吧,我该怎么办. 真的很迷茫,现在来自生活的压力很大,辞职不干来做实习生,压力还是蛮大的. 求IT资深人士的指导. 现在苦于软件底子薄,没有基础.苦恼啊,苦恼啊,苦恼啊. 怎么才能快速踏入软件开发这一行呢? 注: 我现在会的技术如下,不知道能不能给当程序

Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Application 有何妙用: 5. MJ0011 关于 Native Application 的文章整理: 6. 互联网上其他关于 Native Application 的文章整理: 7. 小结: 1. 引子: 其实在好久以前就看了 MJ0011 翻译的那个<Native 应用程序详细>系列的文

程序员快来约这些女生,保你脱单

最近和同事.朋友.网友聊天,聊到程序员谈女朋友的事情,发现了一些有趣的东西,分享出来. 八卦了周围干开发的程序员的另一半的职业,发现了下列组合: 程序员+测试 程序员+美工 程序员+售前 程序员+程序员 程序员+人事(HR) 程序员+客服 程序员+老师 我这人爱瞎琢磨,可这次不是瞎琢磨,我这一琢磨呀,嘿,您还别说,真有点儿道道儿啊,原来这都是绝配啊. 程序员+测试 普通程序员老是和测试 MM 沟通,告别单身的几率比优秀程序员大 100 倍.OMG,这居然是真的.还有谁能比测试更了解程序员? 你的

Android程序crash处理

Android程序crash处理 时间 2014-11-24 13:45:37  CSDN博客 原文  http://blog.csdn.net/allen315410/article/details/41444053 主题 Android 在实际项目开发中,会出现很多的异常直接导致程序crash掉,在开发中我们可以通过logcat查看错误日志,Debug出现的异常,让程序安全的运行,但是在开发中有些异常隐藏的比较深,直到项目发布后,由于各种原因,譬如android设备不一致等等,android

【C语言探索之旅】 第三课:你的第一个程序

内容简介 1.课程大纲 2.第一部分第三课:你的第一个程序 3.第一部分第四课预告:变量的世界 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算符 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写

从程序员到创业者的蜕变(全)

这个标题看起来挺吸引人,其实只是一个普通的人在瞎折腾罢了.之所以写这么多非技术类的“水文”,是我觉得思维要比技术重要.让一个人变牛逼的决非技术.这是肯定的,但是做为程序员,就算是我自己,也难免因为这点技术能力而得瑟. 工作这四年多,不断有朋友向我挥手:“来创业吧,我这个idea特好”,包括我自己也曾向别人挥过手.幻想着大平台,一体化解决方案,得屌丝者得天下,想想都还有点小激动,但是坚持没多久,不是他没音了就是我也懈怠了.说说Stay都参与过哪些项目吧,不算工作上的,抽奖返券app,游戏市场app