今天是10月15日,周四啦
今天开始写个Javaweb吧
我把四则运算的出题界面写成了web,运行一下发现真的行哦
虽然还没做出答题的审核页面,但毕竟是网站嘛,这就是个重大突破啦
这时第一个页面(设定相关参数页面)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>Four operations</title> </head> <body style="text-align:center;"> <br> <form name="form1" action="Question.jsp" method="post"> <br><br> <input type="radio" name="degree" value="0">自己设置 <input type="radio" name="degree" value="1" checked>2年级版本 <input type="radio" name="degree" value="2">3年级版本 <input type="radio" name="degree" value="3">4年级版本 如果您没有选择"自己设置"选项,请跳过下面的设置选项 <br><br> 问题数 <input type="text" name="selfn"> <br><br> 最大值 <input type="text" name="selfma"> <br><br> 最小值 <input type="text" name="selfmi"> <br><br> 如果您的输入不合规则,我们会采用默认参数啦 <br><br> <input type="submit" value="Let us go!"> </form> <form name="form2" action="Damit.jsp" method="post"> <input type="submit" value="错题本"> </form> <br><br> </body> </html>
然后第二个页面:出题页面
<%@ page language="java" import="java.util.*" import="java.text.*" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <title>Go!Go!Go!</title> </head> <body style="text-align:center;" > <% String chooce=request.getParameter("degree"); String tmax=request.getParameter("selfma") ; String tmin=request.getParameter("selfmi") ; String tnum=request.getParameter("selfn") ; Random rand = new Random(); int numT=30,numU=2,max=10,min=99; String dop=null; if(chooce.equals("1")) { numU=2; max=100;min=0; } else if(chooce.equals("2")) { numU=4; max=100;min=0; } else if(chooce.equals("3")) { numU=5; max=100;min=0; } if(chooce.equals("0")) { max= Integer.parseInt(tmax); min= Integer.parseInt(tmin); numT= Integer.parseInt(tnum); if((max-min)<=(2*numT)) { max=100;min=0;numT=30; } } int c=0,p=0,rio=0,sop=0; String[] suanshi=new String[1000]; for(int i=0;i<numT;i++) { p=rand.nextInt(max)-min; suanshi[i]=""+p; int sc=0,sd=0; int error=1; for(;error==1;) { error=0; for(int n=1;n<numU;n++) { c=rand.nextInt(3); switch(c) { case 0: rio=rand.nextInt(max-min)+min+2; if(sc==1) {suanshi[i]=suanshi[i]+("+"+rio+")");sc=0;} else { int f=rand.nextInt(2); if((n<=numU-2)&&(f==1)&&(sd==0)) {suanshi[i]=suanshi[i]+("+("+rio+"");sc=1;sd=1;} else {suanshi[i]=suanshi[i]+("+"+rio);} } sop=rio; break; case 1: rio=rand.nextInt(max-min)+min+2; if(sc==1) {suanshi[i]=suanshi[i]+("-"+rio+")");sc=0;} else { int f=rand.nextInt(2); if((n<=numU-2)&&(f==1)&&(sd==0)) {suanshi[i]=suanshi[i]+("-("+rio+"");sc=1;sd=1;} else {suanshi[i]=suanshi[i]+("-"+rio);} } sop=rio; break; case 2: rio=rand.nextInt(max-min)+min+2; if(sc==1) {suanshi[i]=suanshi[i]+("*"+rio+")");sc=0;} else { int f=rand.nextInt(2); if((n<=numU-2)&&(f==1)&&(sd==0)) {suanshi[i]=suanshi[i]+("*("+rio+"");sc=1;sd=1;} else {suanshi[i]=suanshi[i]+("*"+rio);} } sop=rio; break; case 3: rio=rand.nextInt(max-min)+min+2; try { for(;(sop<rio)||(sop%rio!=0);) {rio=rand.nextInt(max-min)+min;} }catch(ArithmeticException e) { rio=1; } if(sc==1) {suanshi[i]=suanshi[i]+("/"+rio+")");sc=0;} else { int f=rand.nextInt(2); if((n<=numU-2)&&(f==1)&&(sd==0)) {suanshi[i]=suanshi[i]+("/("+rio+"");sc=1;sd=1;} else {suanshi[i]=suanshi[i]+("/"+rio);} } sop=rio; break; } } try { dop=getzongde(suanshi[i]); if(dop.contains(".")) {suanshi[i]=""+p;error=1;} } catch (Exception e) {suanshi[i]=""+p;error=1;} } } %> <%! public static String getzongde(String str){ String kuohao=getkuohao(str); String chengchu=getchengchu(kuohao); String jiajian=getjiajian(chengchu); return jiajian; } public static String getkuohao(String str){ String newstr=str; if(newstr.contains("(")){ int a=str.lastIndexOf("("); String str1=str.substring(a,str.length()); int b =str1.indexOf(")"); String str2=str1.substring(1,b); String chengchu=getchengchu(str2); String jiajian=getjiajian(chengchu); StringBuffer s=new StringBuffer(str); newstr=s.replace(a, a+b+1, jiajian).toString(); return getkuohao(newstr); } return newstr; } public static String getchengchu(String str){ String newstr=str; if(str.contains("*")||str.contains("/")){ String str2[]=str.split("[*/+-]");// String str3=str.replaceAll("\\d+","").replaceAll("\\.",""); int a=0,b=0,c=0,star=0; if(str3.contains("*")&&str3.contains("/")){ a=str3.indexOf("*"); b=str3.indexOf("/"); if(a>b){ c=b; star=str.indexOf("/"); }else{ c=a; star=str.indexOf("*"); } }else if(str3.contains("*")){ c=str3.indexOf("*"); star=str.indexOf("*"); }else{ c=str3.indexOf("/"); star=str.indexOf("/"); } String num=getsuanshi(str2[c]+str3.charAt(c)+str2[c+1]); StringBuffer s=new StringBuffer(str); int kaishi=star-str2[c].length(),jieshu=star+str2[c+1].length()+1; StringBuffer strs=s.replace(kaishi,jieshu ,num); newstr=strs.toString(); return getchengchu(newstr); } return newstr; } public static String getjiajian(String str){ String newstr=str; if(str.contains("+")||str.contains("-")){ String str2[]=str.split("[*/+-]"); String str3=str.replaceAll("\\d+","").replaceAll("\\.",""); int a=0,b=0,c=0,star=0; if(str3.contains("+")&&str3.contains("-")){ a=str3.indexOf("+"); b=str3.indexOf("-"); if(a>b){ c=b; star=str.indexOf("-"); }else{ c=a; star=str.indexOf("+"); } }else if(str3.contains("+")){ c=str3.indexOf("+"); star=str.indexOf("+"); }else{ c=str3.indexOf("-"); star=str.indexOf("-"); } String num=getsuanshi(str2[c]+str3.charAt(c)+str2[c+1]); StringBuffer s=new StringBuffer(str); int kaishi=star-str2[c].length(),jieshu=star+str2[c+1].length()+1; StringBuffer strs=s.replace(kaishi,jieshu ,num); newstr=strs.toString(); return getjiajian(newstr); } return newstr; } public static String getsuanshi(String str){ double c=0.0; String str2[]; if(str.contains("+")){ str2=str.split("[+]"); c=getjia(Double.parseDouble(str2[0]),Double.parseDouble(str2[1])); }else if(str.contains("-")){ str2=str.split("[-]"); c=getjian(Double.parseDouble(str2[0]),Double.parseDouble(str2[1])); }else if(str.contains("*")){ str2=str.split("[*]"); c=getcheng(Double.parseDouble(str2[0]),Double.parseDouble(str2[1])); }else if(str.contains("/")){ str2=str.split("[/]"); c=getchu(Double.parseDouble(str2[0]),Double.parseDouble(str2[1])); } NumberFormat format=NumberFormat.getInstance(); format.setMaximumFractionDigits(30); format.setMinimumFractionDigits(0); format.setGroupingUsed(false); return format.format(c); } public static Double getjia(double a,double b){ double c=a+b; return c; } public static Double getjian(double a,double b){ double c=a-b; return c; } public static Double getcheng(double a,double b){ double c=a*b; return c; } public static Double getchu(double a,double b){ double c=a/b; return c; } %> <form name="form1" action="Rider.jsp" method="post"> 共<input type="text" name="size" size="1" value="<%=numT%>" readonly>题 <br><br> <%for(int i=0;i<numT;i++){ %> <tr> <% out.print("第"+(i+1)+"题:");out.print(suanshi[i]); %> <br> </tr> <%session.setAttribute(("suanshi"+i),suanshi[i]);%> <input type="text" name=<%=i%>><br><br> <%} %> <input type="submit" value="我做完啦!"> </form> <br><br><br> </body> </html>
运行效果:
虽然现在答题审核没做出来,好几个按钮都是404……
不过已经是超大的进步啦!
啊,顺带一提啊,一开始页面各种乱码还着实困扰了我一阵,原来是ISO不认中文,只能用utf-8……
好,今天就这样啦!