level3
伸冤下:老师的评论是有看到!看完我就去修改程序了,忘记回复请原谅!= =
前阵子都在修改功能和思路,但是由于一个细节的错误找不到,导致没有成品可以上传...求谅解。
细心真的很重要 = =!!!
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的更多相关文章
- Jarvis OJ - [XMAN]level3 - Writeup——ret2libc尝试
这次除了elf程序还附带一个动态链接库 先看一下,很一般的保护 思路分析 在ida中查看,可以确定通过read函数输入buf进行溢出,但是并没有看到合适的目标函数 但是用ida打开附带的链接库,可以看 ...
- XXS level3
(1)用level1和2的方法都行不通,查看PHP源代码,发现url与输入框内容都进行了过滤 <?php ini_set("display_errors", 0); $str ...
- TCGA学习1--下载level3 level4数据
1.使用firehose_get 下载level3 level4数据 https://confluence.broadinstitute.org/display/GDAC/Download exa ...
- [BUUCTF]REVERSE——[WUSTCTF2020]level3
[WUSTCTF2020]level3 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 看样子是个base64加密,但又感觉没那么简单,再翻翻左边的函数,找到了base64加 ...
- UiPath Level3讲解
匠厂出品,必属精品 Uipath中文社区qq交流群:465630324 uipath中文交流社区:https://uipathbbs.com RPA之家qq群:465620839 第一课--UiP ...
- [TCO 2012 Round 3A Level3] CowsMooing (数论,中国剩余定理,同余方程)
题目:http://community.topcoder.com/stat?c=problem_statement&pm=12083 这道题还是挺耐想的(至少对我来说是这样).开始时我只会60 ...
- Go语言打造以太坊智能合约测试框架(level3)
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...
- xctf-pwn level3
这道题研究了很久,总算是理解了got表和plt表的关系和作用 checksec看防护 main函数里提示了vunlnerable函数 查看一下vulnerable函数 可以利用read函数栈溢出,但是 ...
- 【绝对干货】仿微信QQ设置图形头像裁剪,让你的App从此炫起来~
最近在做毕业设计,想有一个功能和QQ一样可以裁剪头像并设置圆形头像,额,这是设计狮的一种潮流. 而纵观现在主流的APP,只要有用户系统这个功能,这个需求一般都是在(bu)劫(de)难(bu)逃(xue ...
随机推荐
- 【Ansible 文档】【译文】网络支持
Networking Support 网络支持 Working with Networking Devices 使用网络设备 自从Ansible 2.1开始,你现在可以使用成熟模型 - 编写 play ...
- 封装PDO连接数据库代码
废话不说直接上代码: <?php class DB { protected static $_connect; protected $dsn, $pdo; protected $_data, $ ...
- browerify初步了解
之前在写Signature Request Warnings & eth_sign学习的时候在里的signing examples时了解到browserify工具,可以通过这个例子学习如何使用 ...
- 记录因xen而导致lvs,realserver转发activeconn为0
8.81----vip,keepalived 8.82----realserver 8.83----realserver 8.84----realserver 在8.81上ipvsadm -Ln的时候 ...
- 理解javascript观察者模式(订阅者与发布者)
什么是观察者模式? 观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察着对象.它是由两类对象组成,主题和观察者 ...
- javascript实现拖曳与拖放图片
javascript实现拖曳与拖放图片 其实对于drag和drop拖曳与拖放事件IE很早以前就支持这个操作了,我们先来看看HTML5中新增的拖放API. 在HTML5中想要实现拖放操作,至少要做以下操 ...
- jqgrid 获取选中行主键集合
如何获取选中行的主键集合呢? 使用 getGridParam(selarrrow) 方法可获取所有选中行的主键集合. 注意:此处的主键集合是指-设置为主键的列(key: true).再次提醒:一个j ...
- Mysql客户端软件
Mysql客户端软件Navicat,使用起来很方便; PremiumSoft Navicat for MySQL Enterprise Edition v8.0.27姓名(Name):3ddown.c ...
- 20155202张旭 Exp3 免杀原理与实践
20155202张旭 Exp3 免杀原理与实践 AV厂商检测恶意软件的方式主流的就三种: 基于特征码的检测 启发式恶意软件检测 基于行为的恶意软件检测 我们要做的就是让我们的恶意软件没法被这三种方式找 ...
- 20155306 白皎 0day漏洞——基础知识
20155306 白皎 0day漏洞--(第一篇)基础知识 写在前面: 本次免考实践方向是0day漏洞,以博客的形式记录了我的学习实践过程.第一篇博客主要围绕什么是0day漏洞以及一些以后学习中需要的 ...