• 软件工程结对作业02(借鉴版)


    软件工程结对作业02(借鉴版)

    小组成员:谷伟华、牛俊燕

    在编写程序的时候因为不会将Java程序嵌入进jsp中所以借鉴了一个学姐的程序,下面是学姐的程序。但在对学姐程序就行修改时发现了一些问题:

    在Newjsp中能调用html中的题目个数的参数

    在Myjsp中不能调用html中的题目个数的参数

    其中这个参数timugeshu,是我自己后来添加的,用来改变题目个数的,与Java程序无关,只在jsp文件中作用

    源程序:

    NewFeil.html

      1 <!DOCTYPE html>
      2   <html>
      3     <head>
      4       <title>四则运算</title>
      5       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      6       <meta name="keywords" content="keyword1,keyword2,keyword3">
      7       <meta name="description" content="this is my page">
      8      
      9       
     10      <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
     11  
     12    </head>   
     13    <body background="images/A1.jpg">
     14    <div style=" 100%; font-family: 微软雅黑; text-align: center">
     15       <marquee scrollamount=3  style="COLOR=000000 FILTER: shadow(color=000000 ); 
     16      FONT-FAMILY: 隶书; FONT-SIZE: 25pt; WIDTH: 100%">
     17       欢迎来到四则运算乐园</marquee></div>
     18       <span id="localtime"></span>
     19     <script type="text/javascript">
     20         function showLocale(objD) {
     21             var str, colorhead, colorfoot;
     22             var yy = objD.getYear();
     23             if (yy < 1900)
     24                 yy = yy + 1900;
     25             var MM = objD.getMonth() + 1;
     26             if (MM < 10)
     27                 MM = '0' + MM;
     28             var dd = objD.getDate();
     29             if (dd < 10)
     30                 dd = '0' + dd;
     31             var hh = objD.getHours();
     32             if (hh < 10)
     33                 hh = '0' + hh;
     34             var mm = objD.getMinutes();
     35             if (mm < 10)
     36                 mm = '0' + mm;
     37             var ss = objD.getSeconds();
     38             if (ss < 10)
     39                 ss = '0' + ss;
     40             var ww = objD.getDay();
     41             if (ww == 0)
     42                 colorhead = "<font color="#000000">";
     43             if (ww > 0 && ww < 6)
     44                 colorhead = "<font color="#000000">";
     45             if (ww == 6)
     46                 colorhead = "<font color="#000000">";
     47             if (ww == 0)
     48                 ww = "星期日";
     49             if (ww == 1)
     50                 ww = "星期一";
     51             if (ww == 2)
     52                 ww = "星期二";
     53             if (ww == 3)
     54                 ww = "星期三";
     55             if (ww == 4)
     56                 ww = "星期四";
     57             if (ww == 5)
     58                 ww = "星期五";
     59             if (ww == 6)
     60                 ww = "星期六";
     61             colorfoot = "</font>"
     62             str = colorhead + yy + "-" + MM + "-" + dd + " " + hh + ":" + mm
     63                     + ":" + ss + "  " + ww + colorfoot;
     64             return (str);
     65         }
     66         function tick() {
     67             var today;
     68             today = new Date();
     69             document.getElementById("localtime").innerHTML = showLocale(today);
     70             window.setTimeout("tick()", 1000);
     71         }
     72         tick();
     73     </script>
     74     <br />
     75     <h1 align="center">题目选择</h1>
     76    <!-- 传递参数的值给NewFile.jsp处理 -->
     77    <form action="NewFile.jsp" method="post">  
     78    <!-- 互斥选择,值只能有一个 -->
     79    <center>
     80    <br>请选择上限(分数无上下限):
     81    <select name="TopNumber">
     82         <option value=20>20</option>
     83        <option value=30>30</option>
     84        <option value=50>50</option>
     85        <option value=80>80</option>
     86        <option value=100>100</option>                                              
     87    </select><br>
     88    <br>请选择下限(分数无上下限):
     89    <select name="BaseNumber">
     90        <option value=0>0</option>
     91        <option value=1>1</option>
     92        <option value=3>3</option>
     93        <option value=5>5</option>
     94        <option value=10>10</option>  
     95        <br>   
     96    </select><br>
     97    <br>请输入题目个数:<input type="text" name="timugeshu"><br><br> 
     98    <br>请在以下选项中打勾:
     99    <br>
    100    <tr>请选择需要的题型是否有乘除法:
    101    <input type="radio" name="xuanze" value=1>102    <input type="radio" name="xuanze" value=2>103    </tr>
    104    <br>
    105    <tr>请选择需要的题型是否有余数:
    106    <input type="radio" name="xuanze1" value=3>107    <input type="radio" name="xuanze1" value=4>108    </tr>
    109    <br>
    110    <tr>请选择需要的题型是否有括号:
    111    <input type="radio" name="xuanze2" value=5>112    <input type="radio" name="xuanze2" value=6></tr>
    113    <br>
    114    <br>
    115    
    116    <input type="submit" name="submit" value="提交">
    117    </center>
    118    </form>
    119    </body>
    120  </html>

    NewFeil.jsp

     1 <%@ page language="java" contentType="text/html; charset=utf-8" 
     2      pageEncoding="utf-8"%>
     3   <%@ page import="szys.*"%>
     4   <%
     5   String path = request.getContextPath();
     6   String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     7   %> 
     8  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9  <html>
    10    <head>
    11      <base href="<%=basePath%>">     
    12      <title>四则运算</title>
    13      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    14           <meta http-equiv="pragma" content="no-cache">
    15      <meta http-equiv="cache-control" content="no-cache">
    16      <meta http-equiv="expires" content="0">    
    17      <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    18      <meta http-equiv="description" content="This is my page">
    19      <!--
    20      <link rel="stylesheet" type="text/css" href="styles.css">
    21      -->
    22    </head>   
    23    <body background="images/A2.jpg"> 
    24     <%
    25     int timugeshu=Integer.parseInt((String)request.getParameter("timugeshu"));
    26     String[] s=new String[timugeshu];
    27     float k[]=new float[timugeshu];
    28     math a=new math();
    29     request.setCharacterEncoding("UTF-8");
    30     String xuanze = request.getParameter("xuanze");
    31     String xuanze1 = request.getParameter("xuanze1");
    32     String xuanze2 = request.getParameter("xuanze2");
    33     String TopNumber,BaseNumber;
    34     TopNumber=request.getParameter("TopNumber");
    35     BaseNumber=request.getParameter("BaseNumber");
    36     a.SetValue(a.StrToNum(TopNumber),a.StrToNum(BaseNumber));
    37     if(xuanze!=null&&xuanze1!=null&&xuanze2!=null){
    38     if(xuanze.equals("1"))
    39     {
    40           a.SetValue1(1);
    41     }
    42     if(xuanze1.equals("3"))
    43     {
    44            a.SetValue2(1);
    45     }
    46     if(xuanze2.equals("5"))
    47     {
    48           a.SetValue3(1);
    49     }
    50  }
    51      %>
    52     <form action="Myjsp.jsp" method="post">
    53     <center>
    54     <%
    55       a.main(timugeshu);
    56       float temp;
    57       String[] se=new String[timugeshu];
    58       for(int i=0;i<timugeshu;i++){
    59       s[i]=a.cs(i);
    60       se[i]="name";
    61       se[i]=se[i]+i;
    62       k[i]=a.css(i);
    63       out.print("<tr>"+s[i]+"</tr>");
    64       out.println("<br>");
    65      
    66       
    67     %>   
    68     <input type="text" name=<%=se[i] %>><br>
    69     <%
    70         } 
    71          session.setAttribute( "v1",s);
    72          session.setAttribute( "v2",k); 
    73      %>
    74      <br><input type="submit" name="submit" value="提交">     
    75      <%    %>
    76       </center>
    77    </form>
    78    
    79    
    80     
    81      
    82    </body>
    83  </html>

    MyFeil.jsp

     1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312" contentType="text/html; charset=gb2312"%>
     2 <%@ page import="szys.*"%>
     3 <%String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
     5 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     6 <html>
     7 <head>
     8      <base href="<%=basePath%>">     
     9      <title>答题情况</title>     
    10      <meta http-equiv="pragma" content="no-cache">
    11      <meta http-equiv="cache-control" content="no-cache">
    12      <meta http-equiv="expires" content="0">    
    13      <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    14      <meta http-equiv="description" content="This is my page">
    15      <!--
    16      <link rel="stylesheet" type="text/css" href="styles.css">
    17      --> 
    18    </head>
    19    
    20   <body background="images/A3.jpg">
    21    <% request.setCharacterEncoding("UTF-8");%> 
    22    <center>
    23    <%  
    24      int timugeshu=Integer.parseInt((String)request.getParameter("timugeshu"));
    25      String[] name=new String[timugeshu];
    26      String[] sum=new String[timugeshu];
    27      math a=new math();
    28      float sum1[]=new float[timugeshu];
    29      int right=0;
    30      String[] s= (String[])session.getAttribute("v1");
    31      float[] k=(float[])session.getAttribute("v2");
    32    
    33      for(int i=0;i<timugeshu;i++)
    34          sum1[i]=0;
    35      for(int i=0;i<timugeshu;i++){
    36          name[i]="name";
    37          name[i]=name[i]+i;         
    38          sum[i]=request.getParameter(name[i]);
    39          out.print(s[i]);
    40          out.print("<tr>"+sum[i]+"</tr>");
    41          if(sum[i]=="")
    42             out.print("未回答!");
    43          else{
    44              if(((int)(k[i]*100))%100!=0)
    45                 sum1[i]=a.StrToFloat1(sum[i]);
    46              else
    47                 sum1[i]=a.StrToFloat(sum[i]);
    48              if(Math.abs(sum1[i]*100-k[i]*100)<4){
    49                 out.print(" 回答正确!");
    50                 right++;
    51              }
    52              else
    53                 out.print(" 回答错误,正确答案是: "+k[i]);
    54          }   
    55          
    56           out.println("<br>");
    57      }
    58      out.print("总共做对 "+right+" 题,正确率为:"+(right/timugeshu)*100+" %");
    59    %><br>
    60     <input type="button" value="返回首页" onClick="window.location.href='MyHtml.html'">
    61     <input type="button" value="关闭" onClick="window.close();">
    62      </center>
    63    </body>
    64  </html>

    Math.java

      1 package math;
      2    import java.util.*;
      3    public class math{
      4            static int MAX=100;
      5            static String formula = "";         //当前算式
      6            static String[] buffer = new String[MAX];     //缓冲区数组
      7            static int TopNumber;          //上限
      8            static int BaseNumber;         //下限
      9            static int chengchu;      //是否有乘除
     10           static int Amount;             //操作数的个数
     11           static int BracketNum;         //括号个数
     12           static int[] LBraket = new int[2];         //左括号的位置
     13           static int[] RBraket = new int[2];         //右括号的位置
     14           static int IsNeg;              //是否有负数
     15           static int IsRem;              //是否有余数
     16           static int IsBra;              //是否有括号
     17           static int IsRep;              //是否重复
     18           static float[] Result= new float[MAX];      //正确结果数组
     19           static char lastOp;            //记录上个运算符是否为除号
     20           
     21           //优先级数组
     22           static char[][] prior = {
     23               { '>', '>', '<', '<', '<', '>', '>' },
     24               { '>', '>', '<', '<', '<', '>', '>' },
     25               { '>', '>', '>', '>', '<', '>', '>' },
     26               { '>', '>', '>', '>', '<', '>', '>' },
     27               { '<', '<', '<', '<', '<', '=', ' ' },
     28               { '>', '>', '>', '>', ' ', '>', '>' },
     29               { '<', '<', '<', '<', '<', ' ', '=' }
     30           };
     31           
     32           //将操作符转化为优先级数组的下标
     33           static int Change(String Oper)
     34           {
     35               switch (Oper.charAt(0))
     36               {
     37                   case '+': return 0;
     38                   case '-': return 1; 
     39                   case '*': return 2; 
     40                   case '/': return 3; 
     41                   case '(': return 4; 
     42                   case ')': return 5;
     43                   case '=': return 6; 
     44                   default:  return 6; 
     45               }
     46           }
     47           static int Change(char Oper)
     48           {
     49               switch (Oper)
     50               {
     51                   case '+': return 0;
     52                   case '-': return 1; 
     53                   case '*': return 2; 
     54                   case '/': return 3; 
     55                   case '(': return 4; 
     56                   case ')': return 5;
     57                   case '=': return 6; 
     58                   default:  return 6; 
     59               }
     60           }
     61           static //返回优先级的大小
     62           char Precede(char Oper, char ch)
     63           {
     64               return prior[Change(Oper)][Change(ch)];
     65           }
     66           
     67           //计算两个数的结果
     68           static float Operate(float first, char oper1, float second)
     69           {
     70               switch (oper1)
     71               {
     72               case '+':
     73               {
     74                           return (first + second);
     75               }
     76               case '-':
     77               {
     78                   if (first-second<0)
     79                   {
     80                       IsRep = 1;
     81                       return 0;
     82                   }
     83                           return (first - second);                    
     84               }
     85               case '*':
     86               {
     87                           return (first * second);                    
     88               }
     89               case '/':
     90               {
     91                           if (second == 0)
     92                           {
     93                               IsRep = 1;
     94                               return 0;
     95                           }
     96                           return (first / second);
     97               }
     98               default:  return 0; 
     99               }
    100          }
    101          
    102          //数字的个数
    103          static void NumberAmount()
    104          {
    105              Amount = 2 + (int)((Math.random())*3);
    106          }
    107          
    108          //加左括号   随机选择在第几个数字前面加括号
    109          static void AddLbracket(){
    110              for (int j = 0; j < 2; j++)
    111                  LBraket[j] = 0;
    112              if (Amount == 2)
    113              {
    114                  BracketNum = 0;
    115              }
    116              if (Amount == 3){
    117                  BracketNum = (int)((Math.random())*2);
    118              }
    119              if (Amount > 3)
    120              {
    121                  BracketNum = (int)((Math.random())*3);
    122              }
    123              for (int i = 0; i < BracketNum; i++){
    124                  LBraket[i] = 1 + (int)((Math.random())*(Amount - 2));
    125              }
    126          }
    127          //加右括号
    128          static void AddRbracket(){
    129              for (int j = 0; j < 2; j++)
    130                  RBraket[j] = 0;
    131              int choose;
    132              int trance;
    133              if (BracketNum == 1){
    134                  RBraket[0] = LBraket[0] + 1 +(int)((Math.random())* (Amount - LBraket[0]));
    135              }
    136              if (BracketNum == 2)
    137  
    138              {
    139                  //把最左边的左括号放在第一个数组中
    140                  if (LBraket[0] < LBraket[1])
    141                  {
    142                      trance = LBraket[0];
    143                      LBraket[0] = LBraket[1];
    144                      LBraket[1] = trance;
    145                  }
    146                  //当两个左括号之间相差有点远时有2中右括号添加方法
    147                  if (LBraket[0] - LBraket[1]>2){
    148                      choose = (int)((Math.random())*2);
    149                      if (choose == 0){
    150                          RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    151                          RBraket[1] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    152                      }
    153                      if (choose == 1)
    154                      {
    155                          RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    156                          RBraket[1] = LBraket[1] + 1 + (int)((Math.random())*(LBraket[0] - 2));
    157                      }
    158                  }
    159                  else
    160                  {
    161                      RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    162                      RBraket[1] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    163                      if (LBraket[0] == LBraket[1] && RBraket[0] == RBraket[1]){
    164                          LBraket[0] = LBraket[1] = 0;
    165                          RBraket[0] = RBraket[1] = 0;
    166                          BracketNum = 0; 
    167                      }
    168                      if (LBraket[1] == 1 && (RBraket[0] == Amount || RBraket[1] == Amount))
    169                      {
    170                          LBraket[0] = LBraket[1] = 0;
    171                          RBraket[0] = RBraket[1] = 0;
    172                          BracketNum = 0;
    173                      }
    174  
    175                  }
    176              }
    177          }
    178          
    179          //随机产生最简真分数
    180          static void Score(){
    181              int Left, Right;
    182              Left = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    183              Right = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    184              while (Left >= Right || Left == 0)
    185              {
    186                  Left = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    187                  Right = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    188              }
    189              int max = 1;
    190              //求最大公约数
    191              for (int i = 2; i <= Left; i++)
    192              {
    193                  if (Left%i == 0 && Right%i == 0)
    194                  {
    195                      max = i;
    196                  }
    197              }
    198              if (max > 1)
    199              {
    200                  Left /= max;
    201                  Right /= max;
    202              }
    203              formula += "(" + Left + "/" + Right + ")";
    204          }
    205          
    206          //随机生成操作符
    207          static void Operater()
    208          {
    209              int choose;
    210              char op='+';
    211              if (chengchu== 1)
    212                  choose = 1 + (int)((Math.random())* 4);
    213              else
    214                  choose = 1 + (int)((Math.random())*2);
    215  
    216              switch (choose)
    217              {
    218                  case 1:{op = '+'; lastOp = '+'; break; }
    219                  case 2:{op = '-';  lastOp = '-'; break; }
    220                  case 3:{op = '*';  lastOp = '*'; break; }
    221                  case 4:
    222                  {
    223                            //防止连续除法产生运算误区
    224                            op = '/';
    225                            if (lastOp == '/')
    226                                IsRep = 1;
    227                            else
    228                                lastOp = '/';
    229                            break;
    230                  }
    231              }
    232              formula += op;
    233          }
    234          
    235          //随机生成整数
    236          static void Integer(){
    237              int num;
    238              num = BaseNumber + (int)((Math.random())*(TopNumber - BaseNumber + 1));
    239              formula += num;
    240          }
    241          //创建算式
    242          static void CreateNumber(){
    243              for (int k = 1; k <= Amount; k++)
    244              {
    245  
    246                  for (int i = 0; i < 2; i++){
    247                      if (LBraket[i] == k)
    248                          formula += "(";
    249                  }
    250                   int cho;
    251                  cho = (int)((Math.random())*2);
    252                  if (cho == 0)
    253                  {
    254                      Integer();
    255                  }
    256                  else
    257                      Score();
    258                  for (int j = 0; j < 2; j++){
    259                      if ((RBraket[j] == k) && RBraket[j] != 0)
    260                          formula += ")";
    261                  }
    262                  if (k == Amount)
    263                      formula += "=";
    264                  else
    265                   Operater();
    266            }
    267          }
    268          //检查是否重复及判断括号是否添加正确
    269          static int Repeat(int time){
    270              buffer[time] = formula;
    271              int juege = 0;
    272              int trance;
    273              for (int i = 0; i < time; i++)
    274              {
    275                 if (buffer[i] == buffer[time])
    276                  {
    277                      juege = 1;
    278                      break;
    279                  }
    280              }
    281              if (IsBra != 1)
    282              {
    283                 if (BracketNum == 1)
    284                  {
    285                      if (LBraket[0] == 1 && RBraket[0] == Amount)
    286                          juege = 1;
    287                                       }
    288                  if (BracketNum == 2)
    289                  {
    290                      if (RBraket[0] < RBraket[1])
    291                      {
    292                          trance = RBraket[0];
    293                          RBraket[0] = RBraket[1];
    294                          RBraket[1] = trance;
    295                      }
    296                      if (LBraket[1] == 1 && RBraket[0] == Amount&&LBraket[0] < RBraket[1])
    297                          juege = 1;
    298                  }
    299              }
    300              return juege;
    301          }
    302          static float EvaluateExpression(){
    303              float[] OPND=new float[MAX];
    304              char[] OPTR =new char[MAX];
    305              int Ntop=0;
    306              int Ctop=0;
    307              OPTR[Ctop++]='=';
    308              int count = 0;
    309              float Num = 0, first, second;
    310              char oper1;
    311              char bracket1;
    312              while (true)
    313              {
    314                 Num = 0;
    315                  //读取数字
    316                  while (formula.charAt(count) >= '0'&&formula.charAt(count) <= '9')
    317                  {
    318                      if (formula.charAt(count) == '0')
    319                      {
    320                          if (count == 0)
    321                              OPND[Ntop++]=0;
    322                          if (count != 0 && !(formula.charAt(count-1) >= '0'&&formula.charAt(count-1) <= '9'))
    323                              OPND[Ntop++]=0;
    324                      }
    325                      Num = Num * 10;
    326                      Num = Num + formula.charAt(count) - 48;
    327                                           count++;        
    328                  }
    329                  if (Num > 0)
    330                  {
    331                      OPND[Ntop++]=Num;
    332                  }
    333                  if (formula.charAt(count) == '='&&OPTR[Ctop-1] == '=')
    334                  {
    335                      break;
    336                  }
    337                  //判断运算符优先级  
    338                  switch (Precede(OPTR[Ctop-1], formula.charAt(count)))
    339                  {
    340                      case '<':
    341                      {
    342                         OPTR[Ctop++]=formula.charAt(count);
    343                              count++;
    344                              break;
    345                      }
    346                      case '>':
    347                      {
    348                          oper1=OPTR[--Ctop];
    349                          second=OPND[--Ntop];
    350                          first=OPND[--Ntop];
    351                          OPND[Ntop++]=Operate(first, oper1, second);
    352                              break;
    353                      }
    354                      case '=':
    355                      {
    356                          bracket1=OPTR[--Ctop];
    357                                  count++;
    358                      }
    359                  }
    360              }
    361              return OPND[Ntop-1];
    362          }
    363          
    364          public static void SetValue(int IsMulDlvExist1,int IsRem1,int IsBra1,int TopNumber1,int BaseNumber1)
    365          {
    366              chengchu=0;
    367              BaseNumber=0;
    368              TopNumber=10;
    369              IsNeg=0;
    370              IsRem=0;
    371              IsBra=1;
    372              
    373              chengchu=IsMulDlvExist1;
    374              TopNumber=TopNumber1;
    375              BaseNumber=BaseNumber1;
    376              IsRem=IsRem1;
    377              IsBra=IsBra1;
    378          }
    379          public static void SetValue1(int IMDE)
    380          {
    381              chengchu=IMDE;
    382          }
    383          public static void SetValue2(int Rem)
    384          {
    385              IsRem=Rem;
    386          }
    387          public static void SetValue3(int Bra)
    388          {
    389              IsBra=Bra;
    390          }
    391          public static void SetValue(int TopNumber1,int BaseNumber1){
    392              chengchu=0;
    393              BaseNumber=0;
    394              TopNumber=10;
    395              IsNeg=0;
    396              IsRem=0;
    397              IsBra=1;
    398              TopNumber=TopNumber1;
    399              BaseNumber=BaseNumber1;
    400              
    401          }
    402          
    403          public static int StrToNum(String x)
    404          {
    405                int num=0;
    406                 for(int i=0;i<x.length();i++)
    407                 {
    408                         num=num*10+x.charAt(i)-48;
    409                 }
    410                 return num;
    411          }
    412          public static float StrToFloat(String x)
    413          {
    414              float num=0;
    415              int doat=0;
    416              int mi=-1;
    417              for(int i=0;i<x.length();i++)
    418              {
    419                  if(x.charAt(i)=='.')
    420                  {
    421                      doat=1;
    422                      continue;
    423                  }
    424                  if(doat==1)
    425                  {
    426                      num=(float) (num+(x.charAt(i)-48)*Math.pow(10,mi));
    427                      mi--;
    428                  }else{
    429                      num=num*10+x.charAt(i)-48;
    430                  }
    431              }
    432              return num;
    433          
    434          }
    435          public static float StrToFloat1(String x)
    436          {
    437              float first=0;
    438              float second=0;
    439              int point=0;
    440              for(int i=0;i<x.length();i++)
    441              {
    442                  if(x.charAt(i)=='/')
    443                  {
    444                      point=1;
    445                      continue;
    446                  }
    447                  if(point==1)
    448                  {
    449                      second=second*10+x.charAt(i)-48;
    450                  }else
    451                  {
    452                      first=first*10+x.charAt(i)-48;
    453                  }
    454              }
    455              return (first/second);
    456          }
    457          static int ma()
    458          {
    459              int OutChoose = 0;
    460              int truenum = 0;
    461              int choose;
    462              boolean flag = true;                       
    463              int range = 0;             
    464              for (int i = 0; i < 30; i++)
    465              {
    466                  lastOp = '+';
    467                  IsRep = 0;
    468                 NumberAmount();
    469                  if (IsBra == 0)
    470                  {
    471                      AddLbracket();
    472                      AddRbracket();
    473                  }
    474                  CreateNumber();
    475                  Result[i] = EvaluateExpression();                    
    476                  while (Repeat(i) == 1 || IsRep == 1 || (IsNeg == 1 && (Result[i] < 0 || Result[i] == -0)) || (IsRem == 1 && ((int)(Result[i]*10000))%10000!=0))
    477                  {
    478  
    479                      IsRep = 0;
    480                      lastOp = '+';
    481                      formula="";
    482                      NumberAmount();
    483                      if (IsBra == 0)
    484                      {
    485                          AddLbracket();
    486                          AddRbracket();
    487                      }
    488                      CreateNumber();
    489                      Result[i] = EvaluateExpression();                    
    490                  }
    491                  buffer[i]=formula;
    492                 formula="";
    493              }
    494  
    495              return 0;
    496          }
    497          public static float css(int number){
    498              return Result[number];
    499         }
    500          public static String cs(int number){
    501              return buffer[number];
    502          }
    503      public static void main()
    504      {
    505          int a;
    506          a=ma();
    507          for (int i = 0; i < 30; i++)
    508          {
    509              System.out.println(buffer[i]+Result[i]);
    510          }
    511          
    512      }
    513  }
  • 相关阅读:
    Android MVP架构分析
    JavaEE基本了解
    学习面试题Day09
    使用反射来实现简单工厂模式
    Android Material Design简单使用
    c语言 找最小值
    c++ 计算指定半径圆的面积
    c++ 字符串拷贝以及合并
    python yaml文件读写
    python 列表元素替换以及删除
  • 原文地址:https://www.cnblogs.com/gzgz/p/5372395.html
Copyright © 2020-2023  润新知