• JAVA学习日报 10/15


    今天是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……

    好,今天就这样啦!

  • 相关阅读:
    python 软件目录规范
    生成器与迭代器
    第四周-第08章节-Python3.5-装饰器
    第三周-第18章节-Python3.5-函数式编程与函数不同
    第三周-第17章节-Python3.5-递归
    第三周-第16章节-Python3.5-局部变量与全局变量作用域
    第三周-第14章节-Python3.5-函数式编程
    JAVA发红包案例
    JAVA字符串
    JAVA关于字符串&&字符数组处理的小题目
  • 原文地址:https://www.cnblogs.com/Sakuraba/p/14159309.html
Copyright © 2020-2023  润新知