首次编写JSP代码遇错误:sum无法解析为变量
JSP错误「sum cannot be resolved to a variable」解决办法
错误原因很明确:你在if和else的代码块内部分别声明了sum变量,按照Java的变量作用域规则,代码块内定义的变量只能在当前块中使用,外部的<h2> Addition is: <%=sum %> </h2>根本找不到这个变量。
修正后的代码如下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" import="java.util.Date,java.util.*"%> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <%! public int factorial(int n){ int ans=1; for(int i=1; i<=n; i++){ ans=ans*i; } return ans; } %> <%@include file="header.html" %> <% String op = request.getParameter("btn"); int n1 = Integer.parseInt(request.getParameter("num1")); int n2 = Integer.parseInt(request.getParameter("num2")); // 提前在代码块顶部声明sum,扩大作用域 int sum = 0; if(op.equals("add")){ sum = n1 + n2; }else{ sum = factorial(n1); } Date dt=new Date(); out.println("testing jsp"); %> <h2> Addition is: <%=sum %> </h2> <h4>Today's Date : <%=dt %></h4> <%@include file="footer.html" %> </body> </html>
核心修改点:
- 在
if-else分支之前声明int sum = 0;,让变量作用域覆盖整个脚本段 - 分支内不再重新定义
sum,直接给已声明的变量赋值
内容的提问来源于stack exchange,提问作者Usama Bagwan
相关产品推荐
相关产品推荐

