四则运算2
Posted 姚雅丽~yaoyao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四则运算2相关的知识,希望对你有一定的参考价值。
四则运算2
上次写的只是在java基础的上写的程序,其功能页面的效果都不怎么样。这次和Ms Wang结对对四则运算做了改进,实现了基本的页面美化;
四则运算网页版,而且对三元、二元运算都可以实现,数字的运算都在一百以内的整数。但是对计时什么的还没实现,下次继续改进。
源程序:
src的com.jaovo.msg.model
package com.jaovo.msg.model; public class DoubleOperation { private static int operationNumber; private static double[] result; private static double[] child_result; public static double[] getChild_result() { return child_result; } public static void setChild_result(double[] child_result) { DoubleOperation.child_result = child_result; } public int getOperationNumber() { return operationNumber; } public void setOperationNumber(int operationNumber) { this.operationNumber = operationNumber; } public double[] getResult() { return result; } public void setResult(double[] result) { this.result = result; } }
jsp文件
为了适应小朋友,我先做了一个欢迎界面
先选择答题类型:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="css/style.css"/> <title>小学生四则运算</title> <style type="text/css"> body{ background-image:url(image/4.jpg); } </style> </head> <body> <form action="DoubleOperation.jsp" class="option"> <center><h2>题目定制</h2></center> <p>选择题目类型: <select name="elementNum"> <option>2</option> <option>3</option> </select>元运算<br /></p> 选择题目数量: <input name="count" value="10" type="radio" />10 <input name="count" value="20" type="radio" />20 <input name="count" value="30" type="radio" />30 <input name="count" value="40" type="radio" />40 <input name="count" value="50" type="radio" />50 <input name="count" value="5000" type="radio" />5000<br/> <input name="count" value="1000000" type="radio" />10000000(极限测试,慎选!!) <br /><br /> <button class="submit" style="margin-top:50px">开始答题!</button> </form> </body> </html>
CSS中的代码
@charset "UTF-8"; /****四则运算题目表格(<table>)****/ .box{ margin-top: 50px; } /****结果输入框(<input>)****/ .result{ width: 60px; padding: 5px; border:none; font-size:20px; border-bottom: solid yellowgreen 5px; text-align:center; } /****题目(<td>)****/ .expr{ font-size: x-large; } /****非分数/运算符(<div>)*****/ .nomal{ text-align:center; float:left; position: relative; top: 16px; margin-left: 3px; margin-right: 3px; width="20px" } /****分数(<div>)****/ .fraction{ text-align:center; float: left; margin-left:3px; margin-right: 3px; width="20px" } /****题目选择*****/ .option{ text-align: center; } /******你准备好了吗?按钮******/ .submit1{ padding-top: 10px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; background: #C90; font-family: "微软雅黑"; font-weight: bold; font-size: 20px; } /*****提交按钮*****/ .submit{ padding-top: 10px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; border-radius: 5px; background: cornflowerblue; border: none; cursor: pointer; color:lightyellow; font-family: "微软雅黑"; font-weight: bold; font-size: 20px; } /******计时器*******/ .timer{ position:fixed; top: 10px; right: 10px; border: none; width:50px; text-align: right; background: none; } .pause{ position:fixed; top: 30px; right: 10px; } /****题目选项****/ .option{ margin-left:auto; margin-right:auto; width:600px; margin-top: 130px; border:dashed #9ACD32 2px; padding-top: 100px; padding-bottom: 100px; } /****答题按钮*****/
插入的图片在image中
先二元运算
<%@ page import="java.util.Random" %> <%@ page import="java.lang.Math" %> <%@ page import="com.jaovo.msg.model.DoubleOperation" %> <%@ page import="java.math.BigInteger" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>二元运算</title> </head> <body style="background-image:url(image/5.jpg)"/> <form action="doDoubleOperation.jsp" method="post"> <%! int operationNumber=30;//打印题目的数量%> <%! int character=0;//运算符+,-,*,/%> <%! int num1=0;//运算式中第一个数%> <%! int num2=0;//运算式中第二个数%> <%! int correct=0;//计算正确的数目%> <%! int error=0;//计算错误的数目%> <%! String operat=null;//计算式%> <%! double result[]=new double[operationNumber];//计算式的结果%> <%! double child_result[]=new double[operationNumber];//界面获取的结果%> <%! String[] question=new String[operationNumber]; %> <%!Random random = new Random(); %> <%! int Endtime=1; //跳转时间%> <% long endMili; for(int i=0;i<operationNumber;i++)//初始化计算式的结果 { result[i]=0; child_result[i]=0; } for(int i=0;i<operationNumber;i++) { character=random.nextInt(4)%4+1; if(character==1)//计算加法 { num1=random.nextInt(100)%100;//随机出一个0~100的数 num2=random.nextInt(100)%100; String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"+"+number2+"="; result[i]=num1+num2; } else if(character==2)//计算减法 { num1=random.nextInt(100)%100;//随机出一个1~100的数 if(num1==0) num1=num1+2;//若num1=0,则加2 num2=(int)random.nextInt(num1)%(num1);//随机出一个0~num1的数 String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"-"+number2+"="; result[i]=num1-num2; } else if(character==3)//计算乘法 { num1=random.nextInt(9)%9;//随机出一个0~9的数 num2=random.nextInt(9)%9; String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"*"+number2+"="; result[i]=num1*num2; } else //计算除法 { do{ num1=random.nextInt(81)%81;//随机出一个0~81的数 if(num1>9) num2=random.nextInt(9)%9; else { if(num1==0) num1++; num2=(int)random.nextInt(num1)%(num1); } if(num2==0)//当num2=0再重新生成num2 { num2=num2+1; } String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"/"+number2+"="; result[i]=num1/num2; }while((result[i]>=10)||(num1%num2!=0));//商为10以内的数 } if(Double.valueOf(result[i])>100) {//如果结果大于100或小数位数大于1则不输出 i--; } else { %> <%=operat %><input type="text" name="child_result<%=i %>" size="3"><br> <br> <% } } %> <input type="submit" value="提交" name="提交"> <% DoubleOperation doubleoperation=new DoubleOperation(); doubleoperation.setOperationNumber(operationNumber); doubleoperation.setResult(result); %> <%-- <meta http-equiv="refresh" content ="<%=Endtime*60 %>;url=doDoubleOperation.jsp"> --%> <!-- Endtime分钟后跳转到结果界面 --> </form> </body> </html>
<%@ page import="com.jaovo.msg.model.DoubleOperation" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <%! int correct=0;//计算正确的数目%> <%! int error=0;//计算错误的数目%> <%! int nullerror=0;//没答题的数目 %> <% DoubleOperation doubleoperation=new DoubleOperation(); double[] result=doubleoperation.getResult(); int operationNumber=doubleoperation.getOperationNumber(); System.out.println("count="+operationNumber); for(int i=0;i<operationNumber;i++) { String child_result=request.getParameter("child_result"+i); if((null==child_result)||("".equals(child_result))) { nullerror++; } else { double child_result2=Double.valueOf(child_result); if(child_result2==result[i]) { correct++; } else { error++; } } } %> 恭喜你!答对了<%=correct %>道题,答错了<%=error %>道题,没答<%=nullerror %>道题!!! </body> </html>
三元运算:
<%@ page import="java.util.Random" %> <%@ page import="java.lang.Math" %> <%@ page import="com.jaovo.msg.model.DoubleOperation" %> <%@ page import="java.math.BigInteger" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>三元运算</title> </head> <body> <form action="doDoubleOperation.jsp" method="post"> <%! int operationNumber=30;//打印题目的数量%> <%! int character1=0;//第一个运算符+,-,*,/%> <%! int character2=0;//第二个运算符 %> <%! int num1=0;//运算式中第一个数%> <%! int num2=0;//运算式中第二个数%> <%! int num3=0;//运算式中的第三个数 %> <%! int correct=0;//计算正确的数目%> <%! int error=0;//计算错误的数目%> <%! String operat=null;//计算式%> <%! double result[]=new double[operationNumber];//计算式的结果%> <%!Random random = new Random(); %> <%! int Endtime=1; //跳转时间%> <% for(int i=0;i<operationNumber;i++)//初始化计算式的结果 { result[i]=0; } for(int i=0;i<operationNumber;i++) { character1=random.nextInt(4)%4+1; if(character1==1)//计算加法 { num1=random.nextInt(100)%100;//随机出一个0~100的数 num2=random.nextInt(100)%100; String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"+"+number2; result[i]=num1+num2; } else if(character1==2)//计算减法 { num1=random.nextInt(100)%100;//随机出一个1~100的数 if(num1==0) num1=num1+2;//若num1=0,则加2 num2=(int)random.nextInt(num1)%(num1);//随机出一个0~num1的数 String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"-"+number2; result[i]=num1-num2; } else if(character1==3)//计算乘法 { num1=random.nextInt(9)%9;//随机出一个0~9的数 num2=random.nextInt(9)%9; String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"*"+number2; result[i]=num1*num2; } else //计算除法 { do{ num1=random.nextInt(81)%81;//随机出一个0~81的数 if(num1>9) num2=random.nextInt(9)%9; else { if(num1==0) num1++; num2=(int)random.nextInt(num1)%(num1); } if(num2==0)//当num2=0再重新生成num2 { num2=num2+1; } String number1=String.valueOf(num1); String number2=String.valueOf(num2); operat="第("+(i+1)+")题"+number1+"/"+number2; result[i]=num1/num2; }while((result[i]>=10)||(num1%num2!=0));//商为10以内的数 } character2=random.nextInt(4)%4+1; if(character2==1)//计算第二个加号 { num3=random.nextInt(100)%100; String number3=String.valueOf(num3); operat=operat+"+"+num3+"="; result[i]=result[i]+num3; } else if(character2==2)//第二个运算符是减号 { if(result[i]==0) result[i]=result[i]+2; if(result[i]<100){ num3=(int)random.nextInt((int)result[i])%((int)result[i]);//随机出一个小于被减数的数 } else { num3=random.nextInt(100)%100; } String number3=String.valueOf(num3); operat=operat+"-"+num3+"="; result[i]=result[i]-num3; } else if(character2==3)//乘号 { if(character1==2)//若第一个运算符是减号,则再随机出来一个第二个数与第三个随机的数小于第二个数 num1>=num2*num3 num3<=num1/num2 { if(num1==0) num3=0; else { int num4=num1/num2; num3=(int)random.nextInt(num4)%(num4); } String number3=String.valueOf(num3); operat=operat+"*"+num3+"="; result[i]=num1-(num2*num3); } else //第一个符号是加乘除。若是加,则先计算num2与num3,若是乘除,则计算顺序不变 { if(character1==1){//第一个运算符是加号 num3=(int)random.nextInt(100)%(100); String number3=String.valueOf(num3); operat=operat+"*"+num3+"="; result[i]=num1+(num2*num3); } else if(character1==3)//第一个符号是乘号,num1*num2<=9 { String number2,number3; do{ num2=(int)random.nextInt(9)%(9); result[i]=num1*num2; number2=String.valueOf(num2); }while(result[i]>9); num3=(int)random.nextInt(9)%(9); number3=String.valueOf(num3); operat=operat+"*"+num3+"="; result[i]=result[i]*num3; } else {//第一个符号是除号 num3=(int)random.nextInt(100)%(100); String number3=String.valueOf(num3); operat=operat+"*"+num3+"="; result[i]=result[i]*num3; } } } else//第二个运算符是除号 {以上是关于四则运算2的主要内容,如果未能解决你的问题,请参考以下文章 获取 badarith,[erlang,'+',[error,0],[],同时使用 Erlang 片段在 TSUNG 中执行算术运算