腳本函數奇怪的運行結果
<%@?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+"  ";
??????????????}
??????????????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?+?"  ");
??????????????}
??????????????out.println("<br/>");
??????????}
??????????out.println("<hr>"+n);
??????}
??%>
??<hr/>
??????<%=prtable()%>
??<hr/>
??<%
??????prtable2(out);
??%>
??</body>
</html>
是不是因為函數運行了兩次?如果是,第一次是何時運行的?或者是其他的什么原因?
2017-08-22
全局變量沒刷新一次網頁n加1,因為你刷新了一次所以是運行了第二次,你試試關閉了瀏覽器重新開就是第一次了
2017-12-04
因為你的函數定義為String類,需要返回一個String類對象,當n==2時,return "第二次運行程序";即返回了一個String對象,函數結束運行。不執行下面的代碼,故只打印輸出字符串"第二次運行程序";當刷新第三次時,第一個函數prtable()的s即為兩個九九乘法表,刷新第四次時,第一個函數prtable()的s即為三個九九乘法表;依次類推;