• 四则运算4


    <%@ 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>
          <form action="second.jsp" method="post">
              是否进行混合运算:是<input type="radio" name="hunhe" value="y4"><br><input type="radio" name="hunhe" value="n4"><br>
              <input type="submit" value="提交">
          </form>
    </body>
    </html>
    first.jsp

    1.设计思路

        1)设计网页

               (1).在网页中可以计算四则运算和两个数的加减法,并可以判断结果是否正确,先设置一个网页first.jsp判断是否进行四则运算,将值传到second.jsp,进行选择范围界面,如果不进行四则运算,传到NewFile.jsp界面进行两个数的计算选择界面。两个页面都将选择的值传到NewFile1.jsp界面进行计算,将结果在NewFile2.jsp界面进行判断结果;

               (2).网页中单选框放在表单进行传值,在页面中共享的值用session.getAttribute进行传值,并用session设置一个计数器,可实现循环计算并输出计算个数;

       2)计算

                (1) .用jsp脚本将原四则运算的java文件调用进来,进行四则和两个数计算和判断问题,

               (2).四则运算:用栈实现stack1用来存放数,stack2存放符号的,

                     

       2.程序代码

    first.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">
    <title>Insert title here</title>
    </head>
    <body>
          <form action="second.jsp" method="post">
              是否进行混合运算:是<input type="radio" name="hunhe" value="y4"><br><input type="radio" name="hunhe" value="n4"><br>
              <input type="submit" value="提交">
          </form>
    </body>
    </html>

    second.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">
    <title>Insert title here</title>
    </head>
    <body>
         <%
               String hunhe=request.getParameter("hunhe");
              
               session.setAttribute("hunhe", hunhe);
               if(hunhe.equals("n4"))
               {
           %>
           <jsp:forward page="NewFile.jsp" />
           <% 
               }
               if(hunhe.equals("y4"))
               {
            %>
               <form action="third.jsp" method="post" >
                    请选择范围:1-10<input type="radio" name="hunhefanwei" value="10"><br>
                    1-100<input type="radio" name="hunhefanwei" value="100"><br>
                     <input type="submit" value="进行计算" ><br>
               </form>
          <%   
              }
          %>
    </body>
    </html>

    third.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">
    <title>Insert title here</title>
    </head>
    <body>
         <%
              String chengchu=request.getParameter("chengchu"); 
              String fanwei=request.getParameter("fanwei");
              String fushu=request.getParameter("fushu");
              String yushu=request.getParameter("yushu");
              String hunhefanwei=request.getParameter("hunhefanwei");
              session.setAttribute("hunhefanwei", hunhefanwei);
              session.setAttribute("chengchu", chengchu);
                session.setAttribute("fanwei", fanwei);
                session.setAttribute("fushu",fushu);
                session.setAttribute("yushu", yushu);
         %>
          <jsp:forward page="NewFile1.jsp" />
    </body>
    </html>

    NewFile.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">
    <title>Insert title here</title>
    
    </head>
    <body>    
             <form name="form" method="post" action="third.jsp">
                          是否乘除法:是<input type="radio" value="y1" name="chengchu" checked><br><input type="radio" value="n1" name="chengchu"><br>
                           选择范围:1-10<input type="radio" value="10" name="fanwei" checked>
                           1-100<input type="radio" value="100" name="fanwei" ><br>
                           1-200<input type="radio" value="200" name="fanwei"><br>
                           是否有负数:是<input type="radio" value="y2" name="fushu" checked><br><input type="radio" value="n2" name="fushu"><br>
                           是否有余数:是<input type="radio" value="y3" name="yushu" checked><br><input type="radio" value="n3" name="yushu"> <br>     
                  <input type="submit" value="提交" name="submit">  
             </form>  
             <%out.println((String)session.getAttribute("hunhe")); %>     
    </body>
    </html>

    NewFile1.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ page import="java.util.Random" %>
    <!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>
          <%!
          class Yunsuan{
                private String firstNumber;
                private String secondNumber;
                 private String number;
                 char fuhao[]={'+','-','*','/'};
                 private fenshu fen=new fenshu();
                 public String randomNumber(int i)//求随机数的函数
                 {
                      Random random=new Random();
                       int temp=Math.abs(random.nextInt()%2);
                        if(temp==1)
                        {
                             number="("+String.valueOf(Math.abs(random.nextInt()%i))+"/"+String.valueOf(Math.abs(random.nextInt()%i)+")");
                        }
                        else
                        {
                            int f=random.nextInt();
                            number=String.valueOf(Math.abs(f%i));
                        }
                        return number;
                 }
                 public String addtion(int i,String s)//求加法的函数
                 {
                     firstNumber=randomNumber(i);
                     secondNumber=randomNumber(i);
                     double firstNumberToInteger = 0.0 ;
                     double secondNumberToInteger = 0.0;
                     if(firstNumber.contains("/"))//判断是否为分数,如果是要进行计算成小数便于后边判断是否为负数
                     {
                        String firstNumberToInteger1=firstNumber.substring(1, firstNumber.indexOf("/"));
                        String firstNumberToInteger2=firstNumber.substring(firstNumber.indexOf("/")+1,firstNumber.length()-1);
                         firstNumberToInteger=(Double.parseDouble(firstNumberToInteger1))/(Double.parseDouble(firstNumberToInteger2));
                         firstNumber="("+fen.yuefen(firstNumber)+")";
                     }
                     else
                     {
                         firstNumberToInteger=Double.parseDouble(firstNumber);
                         
                     }
                     if(secondNumber.contains("/"))//同上
                     {
                        String secondNumberToInteger1=secondNumber.substring(1, secondNumber.indexOf("/"));
                        String secondNumberToInteger2=secondNumber.substring(secondNumber.indexOf("/")+1,secondNumber.length()-1);
                        secondNumberToInteger=(Double.parseDouble(secondNumberToInteger1))/(Double.parseDouble(secondNumberToInteger2));
                        secondNumber="("+fen.yuefen(secondNumber)+")";
                     }
                     else
                     {
                         secondNumberToInteger=Double.parseDouble(secondNumber);
                     }
                     if(s.equals("y2"))
                     {
                         return firstNumber+"+"+secondNumber+"=";
                     }
                     if(s.equals("n2"))
                     {
                         double n=firstNumberToInteger+secondNumberToInteger;
                         if(n<0)
                         {
                             return "";
                         }
                         else
                         {
                             return firstNumber+"+"+secondNumber+"=";
                         }
                     }
                     return "";
                 }
                 public String subtraction(int i,String s)//求减法的函数
                 {
                     firstNumber=randomNumber(i);
                     secondNumber=randomNumber(i);
                     firstNumber=randomNumber(i);
                     secondNumber=randomNumber(i);
                     double firstNumberToInteger = 0.0 ;
                     double secondNumberToInteger = 0.0;
                     if(firstNumber.contains("/"))//同加法
                     {
                        String firstNumberToInteger1=firstNumber.substring(1, firstNumber.indexOf("/"));
                        String firstNumberToInteger2=firstNumber.substring(firstNumber.indexOf("/")+1,firstNumber.length()-1);
                         firstNumberToInteger=(Double.parseDouble(firstNumberToInteger1))/(Double.parseDouble(firstNumberToInteger2));
                         firstNumber="("+fen.yuefen(firstNumber)+")";
                     }
                     else
                     {
                         firstNumberToInteger=Double.parseDouble(firstNumber);
                     }
                     if(secondNumber.contains("/"))//同加法
                     {
                        String secondNumberToInteger1=secondNumber.substring(1, secondNumber.indexOf("/"));
                        String secondNumberToInteger2=secondNumber.substring(secondNumber.indexOf("/")+1,secondNumber.length()-1);
                        secondNumberToInteger=(Double.parseDouble(secondNumberToInteger1))/(Double.parseDouble(secondNumberToInteger2));
                        secondNumber="("+fen.yuefen(secondNumber)+")";
                     }
                     else
                     {
                         secondNumberToInteger=Double.parseDouble(secondNumber);
                     }
                     if(s.equals("y2"))
                     {
                         return firstNumber+"-"+secondNumber+"=";
                     }
                     if(s.equals("n2"))
                     {
                         double n=firstNumberToInteger-secondNumberToInteger;
                         if(n<0)
                         {
                             return "";
                         }
                         else
                         {
                             return firstNumber+"-"+secondNumber+"=";
                         }
                     }
                     return "";
                 }
                 public String multiplication(int i)//求乘法的函数
                 {
                     firstNumber=randomNumber(i);
                     secondNumber=randomNumber(i);
                     if(firstNumber.contains("/"))
                     {
                         firstNumber="("+fen.yuefen(firstNumber)+")";
                    }
                     if(secondNumber.contains("/"))
                     {
                         secondNumber="("+fen.yuefen(secondNumber)+")";
                     }
                     return firstNumber+"*"+secondNumber+"=";
                 }
                 public String division(int i,String s)//求除法的函数
                 {
                     firstNumber=randomNumber(i);
                     secondNumber=randomNumber(i);
                     if(firstNumber.contains("/"))
                     {
                         firstNumber="("+fen.yuefen(firstNumber)+")";
                    }
                     if(secondNumber.contains("/"))
                     {
                         secondNumber="("+fen.yuefen(secondNumber)+")";
                     }
                     if(s=="y3")
                     {
                         return firstNumber+"/"+secondNumber+"=";
                     }
                     if(s=="n3")
                     {
                         if(firstNumber.contains("/")||secondNumber.contains("/"))
                         {
                             return firstNumber+"/"+secondNumber+"=";
                         }
                         else
                         {
                             if((Integer.parseInt(firstNumber))%(Integer.parseInt(secondNumber))==0)
                             {
                                 return firstNumber+"/"+secondNumber+"=";
                             }
                             else
                             {
                                 return "";
                             }
                         }
                     }
                     return "";
                 }
                 String isOrNotMultiplicationAndDivision(int i,int j,String s1,String s2)//进行运算的函数
                 {
                     Yunsuan b=new Yunsuan();
                     String str = null;
                     Random random=new Random();
                     int k=random.nextInt();
                     int demp=Math.abs(k%i);
                     
                         switch(fuhao[demp])
                         {
                           case '+':
                          {
                              str=b.addtion(j,s1);
                          }break;
                          case '-':
                          {
                             str=b.subtraction(j,s1);
                          }break;
                          case '*':
                          {
                             str=b.multiplication(j);
                          }break;
                          case '/':
                          {
                              str=b.division(j,s2);
                          }
                         }
                     
                         return str;
                 }
                 public String[] hunhe(int k)    //进行混合运算的函数
                {
                     String number[]=new String[16];
                    Random random=new Random();
                    int a1;
                    for(int i=0;i<15;i++)
                    {
                        if(i%4==1)
                        {
                            number[i]=String.valueOf(Math.abs(random.nextInt()%k));
                        }
                        if(i%4==3)
                        {
                            number[i]=String.valueOf(fuhao[Math.abs(random.nextInt()%3)]);
                        }
                            
                    }  
                    a1=Math.abs(random.nextInt()%3);
                    number[a1*4]="(";
                    number[(Math.abs(a1+1))*4+2]=")";
                    number[15]="#";
                    return number;
                }
          }
            class fenshu//分数计算的类
            {
                public String yuefen(String one)//分数的约分
                {
                    int oneNumber1=stringtoInteger1(one);
                    int oneNumber2=stringtoInteger2(one);
                    int temp;
                    if(oneNumber1>=oneNumber2)
                    {
                        temp=oneNumber2;
                    }
                    else
                    {
                        
                        temp=oneNumber1;
                    }
                    for(int i=2;i<=temp;i++)
                    {
                        if(oneNumber1%i==0&&oneNumber2%i==0)
                        {
                            oneNumber1=oneNumber1/i;
                            oneNumber2=oneNumber2/i;
                            temp=temp/i;
                            i=1;
                        }
                    }
                    if(oneNumber2==1)
                    {
                        return String.valueOf(oneNumber1);
                    }
                    else
                    {
                       return (String.valueOf(oneNumber1)+"/"+String.valueOf(oneNumber2));
                    }
                }
                public String jiafa(String one,String two)//分数加法计算
                {
                    int fenzi,fenmu;
                    int oneNumber1=stringtoInteger1(one);
                    int oneNumber2=stringtoInteger2(one);
                    int twoNumber1=stringtoInteger1(two);
                    int twoNumber2=stringtoInteger2(two);
                    if(oneNumber2==twoNumber2)
                    {
                        fenzi=oneNumber1+twoNumber1;
                        fenmu=oneNumber2;
                    }
                    else
                    {
                        fenmu=oneNumber2*twoNumber2;
                        fenzi=oneNumber1*twoNumber2+oneNumber2*twoNumber1;
                    }
                    return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
                }
                public String jianfa(String one,String two)//分数减法计算
                {
                    int fenzi,fenmu;
                    int oneNumber1=stringtoInteger1(one);
                    int oneNumber2=stringtoInteger2(one);
                    int twoNumber1=stringtoInteger1(two);
                    int twoNumber2=stringtoInteger2(two);
                    if(oneNumber2==twoNumber2)
                    {
                        fenzi=oneNumber1-twoNumber1;
                        fenmu=oneNumber2;
                    }
                    else
                    {
                        fenmu=oneNumber2*twoNumber2;
                        fenzi=oneNumber1*twoNumber2-oneNumber2*twoNumber1;
                    }
                    return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
                }
                public String chengfa(String one,String two)//分数的乘法计算
                {
                    int fenzi,fenmu;
                    int oneNumber1=stringtoInteger1(one);
                    int oneNumber2=stringtoInteger2(one);
                    int twoNumber1=stringtoInteger1(two);
                    int twoNumber2=stringtoInteger2(two);
                    fenzi=oneNumber1*twoNumber1;
                    fenmu=oneNumber2*twoNumber2;
                    return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
                }
                public String chufa(String one,String two)//分数的除法计算
                {
                    int fenzi,fenmu;
                    int oneNumber1=stringtoInteger1(one);
                    int oneNumber2=stringtoInteger2(one);
                    int twoNumber1=stringtoInteger1(two);
                    int twoNumber2=stringtoInteger2(two);
                    fenzi=oneNumber1*twoNumber2;
                    fenmu=oneNumber2*twoNumber1;
                    return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
                }
                public int stringtoInteger1(String s)//数与字符串转换
                {
                    if(s.contains("("))
                    {}
                    else
                    {
                        s="("+s+")";
                    }
                    String oneNumberToInteger1=s.substring(1, s.indexOf("/"));
                    int oneNumber1=Integer.parseInt(oneNumberToInteger1);
                    return oneNumber1;
                }
                public int stringtoInteger2(String s)
                {
                    if(s.contains("("))
                    {}
                    else
                    {
                        s="("+s+")";
                    }
                    String oneNumberToInteger2=s.substring(s.indexOf("/")+1,s.length()-1);
                     int oneNumber2=Integer.parseInt(oneNumberToInteger2);
                     return oneNumber2;
                }
            }
          %>    
         <% //主函数进行运算;
                    //..............获取表单数据;
                String chengchu=(String)session.getAttribute("chengchu");
                String fanwei=(String)session.getAttribute("fanwei");
                String fushu=(String)session.getAttribute("fushu");
                String yushu=(String)session.getAttribute("yushu");
                String hunhe=(String)session.getAttribute("hunhe");
                String hunhefanwei=(String)session.getAttribute("hunhefanwei");
                String temp;
                Yunsuan a=new Yunsuan();
                if(hunhe.equals("n4"))
                {
                    if(chengchu.equals("y1"))
                    {
                     
                        temp=a.isOrNotMultiplicationAndDivision(4,Integer.parseInt(fanwei),fushu,yushu);
                        while(temp=="")
                        {
                            temp=a.isOrNotMultiplicationAndDivision(4,Integer.parseInt(fanwei),fushu,yushu);
                        }
                        out.println(temp);
            //..............将数据上传服务器,进行页面共享数据;            
    
            %>
                        
                       <form action="NewFile2.jsp" method="post" name="form">
                            <input type="hidden" name="temp" value=<%=temp %>>
                            <input type="text" name="input1">
                            <input type="submit" value="提交">
                       </form>
            <%
                      Integer jishu=(Integer)session.getAttribute("jishu");
                      if(jishu==null)
                      {
                           jishu=1;
                      }
                      else
                      {
                           jishu++;
                      }
                      session.setAttribute("jishu", jishu);
                 }
                if(chengchu.equals("n1"))
                {
                    temp=a.isOrNotMultiplicationAndDivision(2,Integer.parseInt(fanwei),fushu,yushu);
                    while(temp=="")
                    {
                        temp=a.isOrNotMultiplicationAndDivision(4,Integer.parseInt(fanwei),fushu,yushu);
                    }
                    out.println(temp);
                    
                    
                    
                    Integer jishu=(Integer)session.getAttribute("jishu");
                    if(jishu==null)
                    {
                        jishu=1;
                    }
                    else
                    {
                         jishu++;
                    }
                    session.setAttribute("jishu", jishu);
             %>
             <!-- 进行提交所计算答案的表单 -->
                  <form action="NewFile2.jsp" method="post" name="form">
                            <input type="hidden" name="temp" value=<%=temp %>>
                            <input type="text" name="input1">
                            <input type="submit" value="提交">
                  </form>
                  
             <%
                  
            }
                }
                if(hunhe.equals("y4"))
                {
                    String number[]=new String[16];
                    number=a.hunhe(Integer.parseInt(hunhefanwei));
                    for(int j=0;j<16;j++)
                    {
                        if(number[j]==null||number[j]=="#")
                        {
                            out.print("");
                        }
                        else
                        {
                            out.print(number[j]);
                        }
                        session.setAttribute("number"+String.valueOf(j),number[j]);
                        
                    }
                    
                  Integer jishu=(Integer)session.getAttribute("jishu");
                  if(jishu==null)
                  {
                      jishu=1;
                  }
                  else
                 {
                     jishu++;
                  }
                  session.setAttribute("jishu", jishu);
             %> 
             <!-- 进行提交混合运算所计算答案的表单 -->
                    <form action="NewFile2.jsp" method="post">      
                      <input type="text" name="input2"><br>
                     <input type="submit" value="提交"><br>              
                    </form>
                <%
                
                } 
                %>         
    </body>
    </html>

    NewFile2.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ page import="java.util.Stack" %>
    <!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>
           <%!
           class Check
           {
             public boolean check(String s,String input)//判断正确的函数
             {
                 fenshu fen=new fenshu();
                 int time1=0,time2=0;
                char cha[]=s.toCharArray();
                for(int i=0;i<cha.length;i++)
                {
                    if(cha[i]=='/')
                    {
                        time1++;
                    }
                    if(cha[i]=='(')
                    {
                        time2++;
                    }
                }
                 if(s.contains("+"))//判断加法计算是否正确
                 {
                    String oneNumber=s.substring(0, s.indexOf("+"));
                    String twoNumber=s.substring(s.indexOf("+")+1,s.length()-1);
                    if(oneNumber.contains("/"))
                    {
                    }
                    else
                    {
                        oneNumber="("+oneNumber+"/1)";
                    }
                    if(twoNumber.contains("/"))
                    {}
                    else
                    {
                        twoNumber="("+twoNumber+"/1)";
                    }
                    if(fen.yuefen(fen.jiafa(oneNumber, twoNumber)).equals(input))
                    {
                        // System.out.println("结果正确!");
                        return true;
                    }
                    else
                    {
                        //System.out.println("结果错误!");
                        return false;
                    }
                 }
                 if(s.contains("-"))//判断减法计算是否正确
                 {
                        String oneNumber=s.substring(0, s.indexOf("-"));
                        String twoNumber=s.substring(s.indexOf("-")+1,s.length()-1);
                        if(oneNumber.contains("/"))
                        {
                        }
                        else
                        {
                            oneNumber="("+oneNumber+"/1)";
                        }
                        if(twoNumber.contains("/"))
                        {}
                        else
                        {
                            twoNumber="("+twoNumber+"/1)";
                        }
                        if(fen.yuefen(fen.jianfa(oneNumber, twoNumber)).equals(input ))
                        {
                            // System.out.println("结果正确!");
                            return true;
                        }
                        else
                        {
                            //System.out.println("结果错误!");
                            return false;
                        }
                 }
                 if(s.contains("*"))//判断乘法计算是否正确
                 {
                        String oneNumber=s.substring(0, s.indexOf("*"));
                        String twoNumber=s.substring(s.indexOf("*")+1,s.length()-1);
                        
                        if(oneNumber.contains("/"))
                        {
                        }
                        else
                        {
                            oneNumber="("+oneNumber+"/1)";
                        }
                        if(twoNumber.contains("/"))
                        {}
                        else
                        {
                            twoNumber="("+twoNumber+"/1)";
                        }
                        if(fen.yuefen(fen.chengfa(oneNumber, twoNumber)).equals(input))
                        {
                             //System.out.println("结果正确!");
                            return true;
                        }
                        else
                        {
                            //System.out.println("结果错误!");
                            return false;
                        }
                 }
                if(time1>time2)//判断除法计算是否正确
                {
                    char ch[]=s.toCharArray();
                    int time=0;
                    for(int i=0;i<s.length();i++)
                    {
                        if(ch[i]=='/')
                        {
                            time++;
                        }
                        if(time==2)
                        {
                              String oneNumber=s.substring(0, i);
                                String twoNumber=s.substring(i+1,s.length()-1);
                                if(oneNumber.contains("/"))
                                {
                                }
                                else
                                {
                                    oneNumber="("+oneNumber+"/1)";
                                }
                                if(twoNumber.contains("/"))
                                {}
                                else
                                {
                                    twoNumber="("+twoNumber+"/1)";
                                }
                                if(fen.yuefen(fen.chufa(oneNumber, twoNumber)).equals(input))
                                {
                                     //System.out.println("结果正确!");
                                     return true;
                                }
                                else
                                {
                                    //System.out.println("结果错误!");
                                    return false;
                                }
                        }break;
                    }        
                }
                return false;
             }
             public int hunhecheck(String[] number,String r)
             {
                String str;
                 Stack<String> stack1=new Stack<String>();
                 Stack<String> stack2=new Stack<String>();
                 for(int i=0;i<16;i++)
                 {   
                     str=number[i];
                     if(str==null)
                     {
                         continue;
                     }
                     if(str!="#")
                     {
                         switch(str)
                         {
                             case "(":
                             {
                                 stack2.push(str);
                             }break;
                             case ")":
                             {
                                 while(stack2.peek()!="(")
                                 {
                                     String str2=stack2.pop();
                                     stack1.push(str2);
                                 }
                                 stack2.pop();
                             }break;
                             case "+":
                             {
                                 if(stack2.empty()==false)
                                 {
                                     while(stack2.empty()==false&&stack2.peek()!="(")
                                     {
                                         String str2=stack2.pop();
                                         stack1.push(str2);
                                     }
                                 }
                                     stack2.push(str);
                             }break;
                             case "-":
                             {
                                 if(stack2.empty()==false)
                                 {
                                     while(stack2.empty()==false&&stack2.peek()!="(")
                                     {
                                         String str2=stack2.pop();
                                         stack1.push(str2);
                                     }
                                 }
                                 stack2.push(str);
                             }break;
                             case "*":
                             {
                                 if(stack2.empty()==false)
                                 {
                                     while((stack2.peek()=="*"||stack2.peek()=="*")&&stack2.empty()==false&&stack2.peek()!="(")
                                     {
                                         String str2=stack2.pop();
                                         stack1.push(str2);
                                     }
                                 }
                                 stack2.push(str);
                             }break;
                             case "/":
                             {
                                 if(stack2.empty()==false)
                                 {
                                     while((stack2.peek()=="*"||stack2.peek()=="*")&&stack2.empty()==false&&stack2.peek()!="(")
                                     {
                                         String str2=stack2.pop();
                                         stack1.push(str2);
                                     }
                                 }
                                     stack2.push(str);
                             }break;
                             default:
                             {
                                 if(str!="#")
                                 {
                                     stack1.push(str);
                                 }
                             }
                             
                         }
                     }
                     if(str=="#")
                     {
                         break;
                     }
                     
                 }
                 while(stack2.empty()==false)
                 {
                     stack1.push(stack2.pop());
                 }
                 Stack<String> stack3=new Stack<String>();
                 while(stack1.empty()==false)
                 {
                     String str1=stack1.pop();
                     stack3.push(str1);
                 }
                 while(stack3.empty()==false)
                 {
                     String a2,a3;
                     String a1=stack3.pop();
                     switch(a1)
                     {
                     case "+":
                     {
                         a2=stack1.pop();
                         a3=stack1.pop();
                         stack1.push(String.valueOf(Integer.parseInt(a2)+Integer.parseInt(a3)));
                     }break;
                     case "-":
                     {
                         a2=stack1.pop();
                         a3=stack1.pop();
                         stack1.push(String.valueOf(Integer.parseInt(a3)-Integer.parseInt(a2)));
                     }break;
                     case "*":
                     {
                         a2=stack1.pop();
                         a3=stack1.pop();
                         stack1.push(String.valueOf(Integer.parseInt(a2)*Integer.parseInt(a3)));
                     }break;
                     default:
                     {
                         stack1.push(a1);
                     }
                     }
                 }
                 String reasult=stack1.pop();
                 int bool;
                 if(r.equals(reasult))
                 {
                     bool=1;
                 }
                 else
                 {
                     bool=0;
                 }
                 return bool;
                /* String str[]=new String[16];
                 for(int i=0;i<16;i++)
                 {
                     str[i]=number[i];
                 }
                 return str;*/
             }
        }
        class fenshu//分数计算的类
        {
            public String yuefen(String one)//分数的约分
            {
                int oneNumber1=stringtoInteger1(one);
                int oneNumber2=stringtoInteger2(one);
                int temp;
                if(oneNumber1>=oneNumber2)
                {
                    temp=oneNumber2;
                }
                else
                {
                    
                    temp=oneNumber1;
                }
                for(int i=2;i<=temp;i++)
                {
                    if(oneNumber1%i==0&&oneNumber2%i==0)
                    {
                        oneNumber1=oneNumber1/i;
                        oneNumber2=oneNumber2/i;
                        temp=temp/i;
                        i=1;
                    }
                }
                if(oneNumber2==1)
                {
                    return String.valueOf(oneNumber1);
                }
                else
                {
                   return (String.valueOf(oneNumber1)+"/"+String.valueOf(oneNumber2));
                }
            }
            public String jiafa(String one,String two)//分数加法计算
            {
                int fenzi,fenmu;
                int oneNumber1=stringtoInteger1(one);
                int oneNumber2=stringtoInteger2(one);
                int twoNumber1=stringtoInteger1(two);
                int twoNumber2=stringtoInteger2(two);
                if(oneNumber2==twoNumber2)
                {
                    fenzi=oneNumber1+twoNumber1;
                    fenmu=oneNumber2;
                }
                else
                {
                    fenmu=oneNumber2*twoNumber2;
                    fenzi=oneNumber1*twoNumber2+oneNumber2*twoNumber1;
                }
                return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
            }
            public String jianfa(String one,String two)//分数减法计算
            {
                int fenzi,fenmu;
                int oneNumber1=stringtoInteger1(one);
                int oneNumber2=stringtoInteger2(one);
                int twoNumber1=stringtoInteger1(two);
                int twoNumber2=stringtoInteger2(two);
                if(oneNumber2==twoNumber2)
                {
                    fenzi=oneNumber1-twoNumber1;
                    fenmu=oneNumber2;
                }
                else
                {
                    fenmu=oneNumber2*twoNumber2;
                    fenzi=oneNumber1*twoNumber2-oneNumber2*twoNumber1;
                }
                return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
            }
            public String chengfa(String one,String two)//分数的乘法计算
            {
                int fenzi,fenmu;
                int oneNumber1=stringtoInteger1(one);
                int oneNumber2=stringtoInteger2(one);
                int twoNumber1=stringtoInteger1(two);
                int twoNumber2=stringtoInteger2(two);
                fenzi=oneNumber1*twoNumber1;
                fenmu=oneNumber2*twoNumber2;
                return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
            }
            public String chufa(String one,String two)//分数的除法计算
            {
                int fenzi,fenmu;
                int oneNumber1=stringtoInteger1(one);
                int oneNumber2=stringtoInteger2(one);
                int twoNumber1=stringtoInteger1(two);
                int twoNumber2=stringtoInteger2(two);
                fenzi=oneNumber1*twoNumber2;
                fenmu=oneNumber2*twoNumber1;
                return (String.valueOf(fenzi)+"/"+String.valueOf(fenmu));
            }
            public int stringtoInteger1(String s)//数与字符串转换
            {
                if(s.contains("("))
                {}
                else
                {
                    s="("+s+")";
                }
                String oneNumberToInteger1=s.substring(1, s.indexOf("/"));
                int oneNumber1=Integer.parseInt(oneNumberToInteger1);
                return oneNumber1;
            }
            public int stringtoInteger2(String s)
            {
                if(s.contains("("))
                {}
                else
                {
                    s="("+s+")";
                }
                String oneNumberToInteger2=s.substring(s.indexOf("/")+1,s.length()-1);
                 int oneNumber2=Integer.parseInt(oneNumberToInteger2);
                 return oneNumber2;
            }
        } 
           %>
           
         <%
                      String s2=request.getParameter("input2");
                      Check c=new Check();
                      String number[]=new String[16];
                      String hunhe=(String)session.getAttribute("hunhe");
                      if(hunhe.equals("y4"))
                      {
                          for(int j=0;j<16;j++)
                          {
                              number[j]=(String)session.getAttribute("number"+String.valueOf(j));
                          }
                          int a=c.hunhecheck(number, s2);
                          if(a==1)
                          {
                              out.println("结果正确!");
                          }
                          if(a==0)
                          {
                              out.println("结果错误!");
                          }
                          Integer i=(Integer)session.getAttribute("jishu");
                          out.println("这是第"+i+"次运算");
                      }
                      if(hunhe.equals("n4"))
                      {
                          String temp=request.getParameter("temp");
                          String s1=request.getParameter("input1");
                          if(c.check(temp,s1)==true)
                          {
                              out.println("结果正确!");
                          }
                          if(c.check(temp,s1)==false)
                          {
                              out.println("结果错误!");
                          }
                          Integer i=(Integer)session.getAttribute("jishu");
                          out.println("这是第"+i+"次运算");
                      }
                   
         %>
                   <form action="NewFile1.jsp" method="post">
                        <input type="submit" value="返回">
                   </form>
    </body>
    </html>

    3.运行结果

    4

    1.项目计划总结

    .

    2.时间记录日志

    3.缺陷记录日志

     

     

  • 相关阅读:
    【Android】Handler的应用(二):从服务器端加载JSON数据的优化
    [置顶] IOS 开发之 CocoaPods讲解
    POJ 1068 (13.10.11)
    android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
    C++笔记(1)
    WCF讲解
    php5 图片验证码一例
    PHP5 GD库生成图形验证码(汉字)
    mysql中limit的用法实例解析
    Limit参数优化MySQL查询的方法
  • 原文地址:https://www.cnblogs.com/wanggang-java/p/5376607.html
Copyright © 2020-2023  润新知