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

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

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

import java.util.Scanner;
public class Main { public static void main(String[] args) {
Scanner in=new Scanner (System.in);
int number=;
int number2;
System.out.println("题目的数量");
number=in.nextInt();
number2=number;
System.out.println("数值范围 10 空格 200 ");//先考虑整数的
int up=,down=;
down=in.nextInt();
up=in.nextInt();
System.out.println("打印时每行的间隔");
int between=;
between=in.nextInt();
String jud1,jud2,jud3;
System.out.println("是否有乘除法Y/N");
jud1=in.next();
in.nextLine();
System.out.println("是否支持小数Y/N");
jud2=in.next();
in.nextLine();
System.out.println("加减有无负数Y/N");
jud3=in.next();
in.nextLine();
//上面为基本要求,的录入
//下面的是为运算答案的一系列变量。
String qustion; //用字符串存放整个算式。定义一个class 来计算答案。
float answer;//答案
int score=;//分数。
int count=;//题数。 do{
int XB2=;//下标
int XB=;
float num[]=new float[];//存放数字,从0 开始;
String sign[]=new String[];//存放符号下标的从0开始; int flag=; //算式长度
int shuzi;
float shuzi2;//数字
int signal=;//数字正负
int b; //运算符号
String Temp=new String("Y");
flag =(int)(Math.random()*)+;//算式长度
if(jud2.equalsIgnoreCase(Temp))//是否有小数点
{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*);
shuzi2=(float)(Math.random()*(up-down))+down;
shuzi2=(int)(shuzi2*);
shuzi2=shuzi2/;//小数点的位数。
if(signal<)
{
num[XB]=shuzi2;
XB++;
qustion=shuzi2+"";//没有负数的有小数点的。
}
else
{
num[XB]=-shuzi2;
XB++;
qustion="(-"+shuzi2+")";
}
}
else{
if(jud3.equalsIgnoreCase(Temp))
signal=(int) (Math.random()*); shuzi=(int)(Math.random()*(up-down)+down);
if(signal<)
{
num[XB]=shuzi;
XB++;
qustion=shuzi+"";
}
else
{
num[XB]=-shuzi;
XB++;
qustion="(-"+shuzi+")";
}
}
//以上是第一个数
do{
if(jud1.equalsIgnoreCase(Temp))//是否有乘除
b=(int)(Math.random()*+);
else
b=(int)(Math.random()*+);
switch(b){
case ://加
if(jud2.equalsIgnoreCase(Temp))//是否小数点
{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*); shuzi2=(float)(Math.random()*(up-down))+down;
shuzi2=(int)(shuzi2*);
shuzi2=shuzi2/;
if(signal<)
{
num[XB]=shuzi2;
XB++;
sign[XB2]="+";
XB2++;
qustion=qustion+"+"+shuzi2;
}
else
{
num[XB]=-shuzi2;
XB++;
sign[XB2]="+";
XB2++;
qustion=qustion+"+"+"(-"+shuzi2+")";
}
}
else{ if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*); shuzi=(int)(Math.random()*(up-down)+down);
if(signal<)
{
num[XB]=shuzi;
XB++;
sign[XB2]="+";
XB2++;
qustion=qustion+"+"+shuzi;
}
else
{
num[XB]=-shuzi;
XB++;
sign[XB2]="+";
XB2++;
qustion=qustion+"+"+"(-"+shuzi+")";
}
}
break;
case ://减
if(jud2.equalsIgnoreCase(Temp))
{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*); shuzi2=(float)(Math.random()*(up-down))+down;
shuzi2=(int)(shuzi2*);
shuzi2=shuzi2/;
if(signal<){
num[XB]=shuzi2;
XB++;
sign[XB2]="-";
XB2++;
qustion=qustion+"-"+shuzi2;
}
else {
num[XB]=-shuzi2;
XB++;
sign[XB2]="-";
XB2++;
qustion=qustion+"-"+"(-"+shuzi2+")";
}
}
else{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*); shuzi=(int)(Math.random()*(up-down)+down);
if(signal<)
{
num[XB]=shuzi;
XB++;
sign[XB2]="-";
XB2++;
qustion=qustion+"-"+shuzi;
}
else
{
num[XB]=-shuzi;
XB++;
sign[XB2]="-";
XB2++;
qustion=qustion+"-"+"(-"+shuzi+")";
}
}
break;
case ://乘
if(jud2.equalsIgnoreCase(Temp))
{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*); shuzi2=(float)(Math.random()*(up-down))+down;
shuzi2=(int)(shuzi2*);
shuzi2=shuzi2/;
if(signal<)
{
num[XB-]=shuzi2*num[XB-];
qustion=qustion+"*"+shuzi2;
}
else
{
num[XB-]=-shuzi2*num[XB-];
qustion=qustion+"*"+shuzi2;
}
}
else{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*);
shuzi=(int)(Math.random()*(up-down)+down);
if(signal<)
{
num[XB-]=shuzi*num[XB-];
qustion=qustion+"*"+shuzi;
}
else
{
num[XB-]=-shuzi*num[XB-];
qustion=qustion+"*"+"(-"+shuzi+")";
}
}
break;
case ://除
if(jud2.equalsIgnoreCase(Temp))
{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*); shuzi2=(float)(Math.random()*(up-down))+down;
shuzi2=(int)(shuzi2*);
shuzi2=shuzi2/;
if(signal<)
{
num[XB-]=num[XB-]/shuzi2;
qustion=qustion+"÷"+shuzi2;
}
else
{
num[XB-]=-num[XB-]/shuzi2;
qustion=qustion+"÷"+"(-"+shuzi2+")";
}
}
else{
if(jud3.equalsIgnoreCase(Temp))//是否有负数
signal=(int) (Math.random()*); shuzi=(int)(Math.random()*(up-down)+down);
if(signal<)
{
num[XB-]=num[XB-]/shuzi;
qustion=qustion+"÷"+shuzi;
}
else
{
num[XB-]=-num[XB-]/shuzi;
qustion=qustion+"÷"+"(-"+shuzi+")";
}
}
break;
}
flag--;
}while(flag>);
qustion=qustion+"= ? ";//最终等式//此处最好输出num数组还有sign数组的内容找出错误的地方。
System.out.print(qustion+"保留两尾小数点/分数也可以");
String user=null;
user=in.nextLine();//录入正确
answer=changeanswer(user);
float answer2=calculation(sign,num);
// for(int jij=0;jij<sign.length;jij++)
// System.out.print(sign[jij]+"*");
// for(int jia=0;jia<num.length;jia++)
// System.out.print("-"+num[jia]+"*");
if(answer==answer2)
{
System.out.println("Right !");
score=score+;
count++;
}
else
System.out.println("The Answer is:"+answer2);
number--;//题目数量
for(int k=;k<=between;k++)//换行
System.out.println();
}while(number>);
System.out.println("You Scores is:"+score);
System.out.println( number2+"---"+"Qustions"+"---"+count +"---"+"You are correct !");
}
static //计算等式
float calculation(String a[]/*运算符数组*/,float b[]/*数字存放的数组*/){
float answer=;
for(int i=;i<a.length;i++)//读取传进来的字符串算式a的长度以此来转换计算。
if(a[i]!=null)
switch((isoperator(a[i].charAt()))){
case :
b[]=b[]+b[];
for(int j=;j<b.length-;j++)
if(b[j+]!=)
b[j]=b[j+];
else
break;
break;
case :
b[]=b[]-b[];
for(int j=;j<b.length-;j++)
if(b[j+]!=)
b[j]=b[j+];
else
break;
break;
default :
break;
}
else
break;
answer=b[];
answer=Math.round(answer*);
answer=answer/;
return answer;//计算机算出的答案。
}
//是否是符号
static int isoperator(char c){
if( c=='+')
return ;
else if(c=='-')
return ;
else if (c=='/')//为了分数的答案做准备。
return ;
return ;
}
static float changeanswer(String a){//用户输入的答案
float Ranswer=;
int i;
float temp[]=new float[];
String abc[]=new String[];
for(i=;i<a.length();i++)
if(isoperator(a.charAt(i))==)
break;
if(i==a.length())
Ranswer=Float.parseFloat(a);
else
{
abc=a.split("\\/");
temp[]=Float.parseFloat(abc[].toString());
temp[]=Float.parseFloat(abc[].toString());
Ranswer=temp[]/temp[];
Ranswer=Math.round(Ranswer*);
Ranswer=Ranswer/;
}
return Ranswer;
}
}

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

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. Linux命令一览

    Linux系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的,合并后仅保留一个-(减号)即可. echo命令:用于在终端输出字符 ...

  2. Redis系列二:reids介绍

    一.什么是redis.redis有哪些特性.redis有哪些应用场景.redis的版本 1. 什么是redis redis是一种基于键值对(key-value)数据库,其中value可以为string ...

  3. shiro实战系列(二)之入门实战续

    下面讲解基于实战系列一,所以相关的java文件获取pom.xml及其log4j文件同样适用于本次讲解. 一.Using Shiro Using Shiro 现在我们的 SecurityManager ...

  4. Ubuntu18.04安装Teamviewer

    首先,打开TeamViewer的下载页面,下载Debian/Ubuntu的Deb安装包. 这里有64位和32位安装包选项.可以在Terminal(终端)中输入uname -a 查看自己系统版本是64位 ...

  5. ceph维护

    一个节点挂了,重新添加硬盘并格式化成xfs文件系统挂载到原来的位置后ceph osd无法启动.使用ceph osd tree查看处于down状态.A:移除掉这个osd,1:ceph osd out o ...

  6. day 30

    今日内容: 单例模式的四种方法 网络编程的介绍 单例模式: 什么是单例模式? 单例模式就是经过多次实例化,指向的是同一实例 为何要用单例模式? 可以节省内存资源 如何用单例模式? 方式一:利用绑定方法 ...

  7. Controller中添加一个异步的Action

    给一段示例代码: public Task<ActionResult> TbReport(string code) { return Task.Factory.StartNew(() =&g ...

  8. Patchwork(2013年)--CNV检测方法流程

    文章题目:Patchwork: allele-specific copy number analysis of whole-genome sequenced tumor tissue 特点: 可以检测 ...

  9. 利用IDA6.6进行apk dex代码动态调试

    网上公开IDA6.6已经有一段时间,这个版本有个好处就是可以动态调试java代码.正好现在需要动态调试,所以顺便练习一下. 根据android的官方文档,如果要调试一个apk里面的dex代码,必须满足 ...

  10. 四、MYSQL的数据类型

    类型选择原则 1.储存空间越少越好: 2.简单就好:例如整型比字符串更简单: 3.尽量避免null: 一.整数类型 1.有tinyint(8位).SMALLINT(16位).MEDIUMINT(24位 ...