伸冤下:老师的评论是有看到!看完我就去修改程序了,忘记回复请原谅!= =

前阵子都在修改功能和思路,但是由于一个细节的错误找不到,导致没有成品可以上传...求谅解。

细心真的很重要 = =!!!

  1. import java.util.Scanner;
  2. public class Main {
  3.  
  4. public static void main(String[] args) {
  5. Scanner in=new Scanner (System.in);
  6. int number=;
  7. int number2;
  8. System.out.println("题目的数量");
  9. number=in.nextInt();
  10. number2=number;
  11. System.out.println("数值范围 10 空格 200 ");//先考虑整数的
  12. int up=,down=;
  13. down=in.nextInt();
  14. up=in.nextInt();
  15. System.out.println("打印时每行的间隔");
  16. int between=;
  17. between=in.nextInt();
  18. String jud1,jud2,jud3;
  19. System.out.println("是否有乘除法Y/N");
  20. jud1=in.next();
  21. in.nextLine();
  22. System.out.println("是否支持小数Y/N");
  23. jud2=in.next();
  24. in.nextLine();
  25. System.out.println("加减有无负数Y/N");
  26. jud3=in.next();
  27. in.nextLine();
  28. //上面为基本要求,的录入
  29. //下面的是为运算答案的一系列变量。
  30. String qustion; //用字符串存放整个算式。定义一个class 来计算答案。
  31. float answer;//答案
  32. int score=;//分数。
  33. int count=;//题数。
  34.  
  35. do{
  36. int XB2=;//下标
  37. int XB=;
  38. float num[]=new float[];//存放数字,从0 开始;
  39. String sign[]=new String[];//存放符号下标的从0开始;
  40.  
  41. int flag=; //算式长度
  42. int shuzi;
  43. float shuzi2;//数字
  44. int signal=;//数字正负
  45. int b; //运算符号
  46. String Temp=new String("Y");
  47. flag =(int)(Math.random()*)+;//算式长度
  48. if(jud2.equalsIgnoreCase(Temp))//是否有小数点
  49. {
  50. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  51. signal=(int) (Math.random()*);
  52. shuzi2=(float)(Math.random()*(up-down))+down;
  53. shuzi2=(int)(shuzi2*);
  54. shuzi2=shuzi2/;//小数点的位数。
  55. if(signal<)
  56. {
  57. num[XB]=shuzi2;
  58. XB++;
  59. qustion=shuzi2+"";//没有负数的有小数点的。
  60. }
  61. else
  62. {
  63. num[XB]=-shuzi2;
  64. XB++;
  65. qustion="(-"+shuzi2+")";
  66. }
  67. }
  68. else{
  69. if(jud3.equalsIgnoreCase(Temp))
  70. signal=(int) (Math.random()*);
  71.  
  72. shuzi=(int)(Math.random()*(up-down)+down);
  73. if(signal<)
  74. {
  75. num[XB]=shuzi;
  76. XB++;
  77. qustion=shuzi+"";
  78. }
  79. else
  80. {
  81. num[XB]=-shuzi;
  82. XB++;
  83. qustion="(-"+shuzi+")";
  84. }
  85. }
  86. //以上是第一个数
  87. do{
  88. if(jud1.equalsIgnoreCase(Temp))//是否有乘除
  89. b=(int)(Math.random()*+);
  90. else
  91. b=(int)(Math.random()*+);
  92. switch(b){
  93. case ://加
  94. if(jud2.equalsIgnoreCase(Temp))//是否小数点
  95. {
  96. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  97. signal=(int) (Math.random()*);
  98.  
  99. shuzi2=(float)(Math.random()*(up-down))+down;
  100. shuzi2=(int)(shuzi2*);
  101. shuzi2=shuzi2/;
  102. if(signal<)
  103. {
  104. num[XB]=shuzi2;
  105. XB++;
  106. sign[XB2]="+";
  107. XB2++;
  108. qustion=qustion+"+"+shuzi2;
  109. }
  110. else
  111. {
  112. num[XB]=-shuzi2;
  113. XB++;
  114. sign[XB2]="+";
  115. XB2++;
  116. qustion=qustion+"+"+"(-"+shuzi2+")";
  117. }
  118. }
  119. else{
  120.  
  121. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  122. signal=(int) (Math.random()*);
  123.  
  124. shuzi=(int)(Math.random()*(up-down)+down);
  125. if(signal<)
  126. {
  127. num[XB]=shuzi;
  128. XB++;
  129. sign[XB2]="+";
  130. XB2++;
  131. qustion=qustion+"+"+shuzi;
  132. }
  133. else
  134. {
  135. num[XB]=-shuzi;
  136. XB++;
  137. sign[XB2]="+";
  138. XB2++;
  139. qustion=qustion+"+"+"(-"+shuzi+")";
  140. }
  141. }
  142. break;
  143. case ://减
  144. if(jud2.equalsIgnoreCase(Temp))
  145. {
  146. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  147. signal=(int) (Math.random()*);
  148.  
  149. shuzi2=(float)(Math.random()*(up-down))+down;
  150. shuzi2=(int)(shuzi2*);
  151. shuzi2=shuzi2/;
  152. if(signal<){
  153. num[XB]=shuzi2;
  154. XB++;
  155. sign[XB2]="-";
  156. XB2++;
  157. qustion=qustion+"-"+shuzi2;
  158. }
  159. else {
  160. num[XB]=-shuzi2;
  161. XB++;
  162. sign[XB2]="-";
  163. XB2++;
  164. qustion=qustion+"-"+"(-"+shuzi2+")";
  165. }
  166. }
  167. else{
  168. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  169. signal=(int) (Math.random()*);
  170.  
  171. shuzi=(int)(Math.random()*(up-down)+down);
  172. if(signal<)
  173. {
  174. num[XB]=shuzi;
  175. XB++;
  176. sign[XB2]="-";
  177. XB2++;
  178. qustion=qustion+"-"+shuzi;
  179. }
  180. else
  181. {
  182. num[XB]=-shuzi;
  183. XB++;
  184. sign[XB2]="-";
  185. XB2++;
  186. qustion=qustion+"-"+"(-"+shuzi+")";
  187. }
  188. }
  189. break;
  190. case ://乘
  191. if(jud2.equalsIgnoreCase(Temp))
  192. {
  193. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  194. signal=(int) (Math.random()*);
  195.  
  196. shuzi2=(float)(Math.random()*(up-down))+down;
  197. shuzi2=(int)(shuzi2*);
  198. shuzi2=shuzi2/;
  199. if(signal<)
  200. {
  201. num[XB-]=shuzi2*num[XB-];
  202. qustion=qustion+"*"+shuzi2;
  203. }
  204. else
  205. {
  206. num[XB-]=-shuzi2*num[XB-];
  207. qustion=qustion+"*"+shuzi2;
  208. }
  209. }
  210. else{
  211. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  212. signal=(int) (Math.random()*);
  213. shuzi=(int)(Math.random()*(up-down)+down);
  214. if(signal<)
  215. {
  216. num[XB-]=shuzi*num[XB-];
  217. qustion=qustion+"*"+shuzi;
  218. }
  219. else
  220. {
  221. num[XB-]=-shuzi*num[XB-];
  222. qustion=qustion+"*"+"(-"+shuzi+")";
  223. }
  224. }
  225. break;
  226. case ://除
  227. if(jud2.equalsIgnoreCase(Temp))
  228. {
  229. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  230. signal=(int) (Math.random()*);
  231.  
  232. shuzi2=(float)(Math.random()*(up-down))+down;
  233. shuzi2=(int)(shuzi2*);
  234. shuzi2=shuzi2/;
  235. if(signal<)
  236. {
  237. num[XB-]=num[XB-]/shuzi2;
  238. qustion=qustion+"÷"+shuzi2;
  239. }
  240. else
  241. {
  242. num[XB-]=-num[XB-]/shuzi2;
  243. qustion=qustion+"÷"+"(-"+shuzi2+")";
  244. }
  245. }
  246. else{
  247. if(jud3.equalsIgnoreCase(Temp))//是否有负数
  248. signal=(int) (Math.random()*);
  249.  
  250. shuzi=(int)(Math.random()*(up-down)+down);
  251. if(signal<)
  252. {
  253. num[XB-]=num[XB-]/shuzi;
  254. qustion=qustion+"÷"+shuzi;
  255. }
  256. else
  257. {
  258. num[XB-]=-num[XB-]/shuzi;
  259. qustion=qustion+"÷"+"(-"+shuzi+")";
  260. }
  261. }
  262. break;
  263. }
  264. flag--;
  265. }while(flag>);
  266. qustion=qustion+"= ? ";//最终等式//此处最好输出num数组还有sign数组的内容找出错误的地方。
  267. System.out.print(qustion+"保留两尾小数点/分数也可以");
  268. String user=null;
  269. user=in.nextLine();//录入正确
  270. answer=changeanswer(user);
  271. float answer2=calculation(sign,num);
  272. // for(int jij=0;jij<sign.length;jij++)
  273. // System.out.print(sign[jij]+"*");
  274. // for(int jia=0;jia<num.length;jia++)
  275. // System.out.print("-"+num[jia]+"*");
  276. if(answer==answer2)
  277. {
  278. System.out.println("Right !");
  279. score=score+;
  280. count++;
  281. }
  282. else
  283. System.out.println("The Answer is:"+answer2);
  284. number--;//题目数量
  285. for(int k=;k<=between;k++)//换行
  286. System.out.println();
  287. }while(number>);
  288. System.out.println("You Scores is:"+score);
  289. System.out.println( number2+"---"+"Qustions"+"---"+count +"---"+"You are correct !");
  290. }
  291. static //计算等式
  292. float calculation(String a[]/*运算符数组*/,float b[]/*数字存放的数组*/){
  293. float answer=;
  294. for(int i=;i<a.length;i++)//读取传进来的字符串算式a的长度以此来转换计算。
  295. if(a[i]!=null)
  296. switch((isoperator(a[i].charAt()))){
  297. case :
  298. b[]=b[]+b[];
  299. for(int j=;j<b.length-;j++)
  300. if(b[j+]!=)
  301. b[j]=b[j+];
  302. else
  303. break;
  304. break;
  305. case :
  306. b[]=b[]-b[];
  307. for(int j=;j<b.length-;j++)
  308. if(b[j+]!=)
  309. b[j]=b[j+];
  310. else
  311. break;
  312. break;
  313. default :
  314. break;
  315. }
  316. else
  317. break;
  318. answer=b[];
  319. answer=Math.round(answer*);
  320. answer=answer/;
  321. return answer;//计算机算出的答案。
  322. }
  323. //是否是符号
  324. static int isoperator(char c){
  325. if( c=='+')
  326. return ;
  327. else if(c=='-')
  328. return ;
  329. else if (c=='/')//为了分数的答案做准备。
  330. return ;
  331. return ;
  332. }
  333. static float changeanswer(String a){//用户输入的答案
  334. float Ranswer=;
  335. int i;
  336. float temp[]=new float[];
  337. String abc[]=new String[];
  338. for(i=;i<a.length();i++)
  339. if(isoperator(a.charAt(i))==)
  340. break;
  341. if(i==a.length())
  342. Ranswer=Float.parseFloat(a);
  343. else
  344. {
  345. abc=a.split("\\/");
  346. temp[]=Float.parseFloat(abc[].toString());
  347. temp[]=Float.parseFloat(abc[].toString());
  348. Ranswer=temp[]/temp[];
  349. Ranswer=Math.round(Ranswer*);
  350. Ranswer=Ranswer/;
  351. }
  352. return Ranswer;
  353. }
  354. }

最基本的功能还是可以有的,答案支持分数,小数等多种形态。答案可以出来,希望老师帮忙看看 思路 有没有漏洞.

level3的更多相关文章

  1. Jarvis OJ - [XMAN]level3 - Writeup——ret2libc尝试

    这次除了elf程序还附带一个动态链接库 先看一下,很一般的保护 思路分析 在ida中查看,可以确定通过read函数输入buf进行溢出,但是并没有看到合适的目标函数 但是用ida打开附带的链接库,可以看 ...

  2. XXS level3

    (1)用level1和2的方法都行不通,查看PHP源代码,发现url与输入框内容都进行了过滤 <?php ini_set("display_errors", 0); $str ...

  3. TCGA学习1--下载level3 level4数据

    1.使用firehose_get   下载level3 level4数据 https://confluence.broadinstitute.org/display/GDAC/Download exa ...

  4. [BUUCTF]REVERSE——[WUSTCTF2020]level3

    [WUSTCTF2020]level3 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 看样子是个base64加密,但又感觉没那么简单,再翻翻左边的函数,找到了base64加 ...

  5. UiPath Level3讲解

    匠厂出品,必属精品   Uipath中文社区qq交流群:465630324 uipath中文交流社区:https://uipathbbs.com RPA之家qq群:465620839 第一课--UiP ...

  6. [TCO 2012 Round 3A Level3] CowsMooing (数论,中国剩余定理,同余方程)

    题目:http://community.topcoder.com/stat?c=problem_statement&pm=12083 这道题还是挺耐想的(至少对我来说是这样).开始时我只会60 ...

  7. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...

  8. xctf-pwn level3

    这道题研究了很久,总算是理解了got表和plt表的关系和作用 checksec看防护 main函数里提示了vunlnerable函数 查看一下vulnerable函数 可以利用read函数栈溢出,但是 ...

  9. 【绝对干货】仿微信QQ设置图形头像裁剪,让你的App从此炫起来~

    最近在做毕业设计,想有一个功能和QQ一样可以裁剪头像并设置圆形头像,额,这是设计狮的一种潮流. 而纵观现在主流的APP,只要有用户系统这个功能,这个需求一般都是在(bu)劫(de)难(bu)逃(xue ...

随机推荐

  1. 【Hibernate步步为营】--核心对象+持久对象全析(一)

    引言         上篇博客对Hibernate进行了基本的解析.并分析了它的一些特性. Hibernate可以如此的流行也是由于它有诸多长处,不论什么事物都有两面性.Hibernate尽管流行.可 ...

  2. java疯狂讲义--摘要

    1.一个java文件中可以有多个类,但是只能有一个public类,并且该类需要与文件同名 第6章 对象的软,弱和虚引用 1.强引用---创建一个对象,并把这个对象赋给一个引用变量.一个对象被一个以上的 ...

  3. Android开发-各种各样好看漂亮的进度条,指示器,加载提示汇总

    导读:之前项目中用到一些进度条,找了不少,打算写个demo自己总结一下,留着以后用, 有些是自己写的,有些是github上找的别人的库,如果大家觉得好看可以用,直接下载复制代码到项目里就可以用,ok ...

  4. 关于Spring IOC (DI-依赖注入)需要知道的一切

    关联文章: 关于Spring IOC (DI-依赖注入)你需要知道的一切 关于 Spring AOP (AspectJ) 你该知晓的一切 <Spring入门经典>这本书无论对于初学者或者有 ...

  5. [转]改善C#程序的建议4:C#中标准Dispose模式的实现

    需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源:不 ...

  6. day51

    JS基础操作 一.分支结构 1.if语句 if 基础语法 if (条件表达式) { 代码块; } // 当条件表达式结果为true,会执行代码块:反之不执行 // 条件表达式可以为普通表达式 // 0 ...

  7. day42

    今日内容: 1.子查询补充 2.正则表达式 3.pymysql 1.子查询补充 什么是子查询? 将上一次查询的结果作为下一次查询的条件或原数据 又称为内查询 作用:当你的需求,一次查询无法满足的时候( ...

  8. “System.Reflection.AmbiguousMatchException”类型的异常在 mscorlib.dll 中发生

    错误提示: “System.Reflection.AmbiguousMatchException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理. 发现不明确的匹配. 问题原 ...

  9. 20155217《网络对抗》Exp02 后门原理与实践

    20155217<网络对抗>Exp02 后门原理与实践 实验要求 使用netcat获取主机操作Shell,cron启动. 使用socat获取主机操作Shell,任务计划启动. 使用MSF ...

  10. 20155301 Exp4 恶意代码分析

    20155301 Exp4 恶意代码分析 实践目标 (1) 是监控你自己系统的运行状态,看有没有可疑的程序在运行. (2) 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用 ...