四则运算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.缺陷记录日志

 

 

 

posted @ 2016-04-10 23:56  天中之云  阅读(223)  评论(0编辑  收藏  举报