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 ...
随机推荐
- windows 下配置 Nginx 常见问题
因为最近的项目需要用到负载均衡,不用考虑,当然用大名鼎鼎的Nginx啦.至于Nginx的介绍,这里就不多说了,直接进入主题如何在Windows下配置. 我的系统是win7旗舰版的,到官网下载最新版本 ...
- OpenCV——创建Mat对象、格式化输出、常用数据结构和函数(point,vector、Scalar、Size、Rect、cvtColor)
创建Mat对象:
- mysql insert插入的3种方法
测试表student的字段 1.插入一条数据 INSERT INTO student(sid,sname,sage,ssex) VALUES(1,"wangdali",18,0); ...
- JavaScript标准对象
1.Date var now = new Date(); now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST) now.getFullYear(); // 2 ...
- Android 绘图时实现双缓冲
一.双缓冲技术原理: 在内存中创建一片内存区域,把将要绘制的图片预先绘制到内存中,在绘制显示的时候直接获取缓冲区的图片进行绘制.更具体一点来说:先通过setBitmap方法将要绘制的所有的图形绘制到一 ...
- python获得命令行参数的方法
#encoding=utf8 import sys reload(sys) sys.setdefaultencoding("utf8") print "参数名: &quo ...
- C# 取两个集合的交集\并集\差集
交集:Intersect 并集:Union 差集:Except , , , , , }; , , , ,,, }; var C= A.Intersect(B); //交集 { 3, 4, 5, 6 } ...
- odoo之显示前端,数据,可选择
def create(self,cr,uid,vals,context=None): if context is None: context ={} if vals.get('name','/')== ...
- ASP.NET Core MVC中的IActionFilter.OnActionExecuting方法,可以获取Controller的Action方法参数值
用过ASP.NET Core MVC中IActionFilter拦截器的开发人员,都知道这是一个非常强大的MVC拦截器.最近才发现IActionFilter的OnActionExecuting方法,甚 ...
- 复习整理2:juit
@FixMethodOrder(MethodSorters.NAME_ASCENDING)测试回环 https://blog.csdn.net/u014294166/article/details/5 ...