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

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

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

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;
}
}

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

最新文章

  1. [MISSAJJ原创] UITableViewCell移动及翻转出现的3D动画效果[58同城cell移动效果]
  2. Python基础篇【第3篇】: Python正则表达式
  3. 大数据之sqoopCDH 备份
  4. mysql一些有用的链接
  5. log4net 发布到生产环境不写日志的解决方法--使用 NLog日志
  6. 学习总结 DML数据库增删改语句
  7. 剑指OFFER之矩形覆盖(九度OJ1390)
  8. TDirectory.IsEmpty判断指定目录是否为空
  9. MVC页面上多个提交按钮提交到不同的Action
  10. 深入解析Javascript异步编程
  11. 第03周-Java作业评价
  12. MongoDB 原子操作
  13. 软件工程(FZU2015) 赛季得分榜,第四回合
  14. new-xml-data
  15. 太白教你学python---博客分类目录
  16. css基本图形绘制(基本的矩形、圆形、椭圆、三角形、多边形,也包括稍微复杂一点的爱心、钻石、阴阳八卦等)
  17. PHP正则自动验证传入数据
  18. ashx session 赋值 获取
  19. 代码: js日期
  20. VS2012编译FFmpeg 2.1.4

热门文章

  1. postMessage 消息传递
  2. MD5+DES在C#.NET与Java/Android中的加解密使用
  3. jenkins发版脚本更新
  4. oracle数据库flashback系列--闪回数据库在dataguard中的使用
  5. eclipse中ant打war包
  6. Windows下安装Tensorflow—GPU版本
  7. web.py利用模板的详细步骤
  8. Java UDP和TCP的区别
  9. P3084 [USACO13OPEN]照片Photo
  10. 计算机视觉-sift(2)代码理解