问答详情
源自:2-12 阶段项目

脚本函数奇怪的运行结果

<%@ page import="java.util.*" contentType="text/html;charset=UTF-8" language="java"   %>
<html>
  <head>
    <title>title</title>
  </head>
  <body>
  <h1>九九乘法表</h1>
  <%!
      int n=0;
      String s="";
      String prtable(){
          n++;
          if (n==2){
              return "第二次运行程序";
          }
          for (int i=1;i<10;i++){
              for(int j=1;j<=i;j++){
                  s=s+i+"*"+j+"="+i*j+"&nbsp;&nbsp";
              }
              s+="<br/>\n";
          }
          return s;
      }
      void prtable2(JspWriter out)throws Exception {
          for (int i = 1; i < 10; i++) {
              for (int j = 1; j <= i; j++) {
                  out.println(+i + "*" + j + "=" + i * j + "&nbsp;&nbsp");
              }
              out.println("<br/>");
          }
          out.println("<hr>"+n);
      }
  %>
  <hr/>
      <%=prtable()%>
  <hr/>

  <%
      prtable2(out);
  %>
  </body>
</html>

http://img.mukewang.com/599af42200017c7c06900379.jpg

是不是因为函数运行了两次?如果是,第一次是何时运行的?或者是其他的什么原因?

提问者:未来的开拓者 2017-08-21 22:56

个回答

  • 慕粉2018078477
    2017-08-22 01:44:53
    已采纳

    全局变量没刷新一次网页n加1,因为你刷新了一次所以是运行了第二次,你试试关闭了浏览器重新开就是第一次了


  • 昆虫666
    2017-12-04 21:15:48

    因为你的函数定义为String类,需要返回一个String类对象,当n==2时,return "第二次运行程序";即返回了一个String对象,函数结束运行。不执行下面的代码,故只打印输出字符串"第二次运行程序";当刷新第三次时,第一个函数prtable()的s即为两个九九乘法表,刷新第四次时,第一个函数prtable()的s即为三个九九乘法表;依次类推;