You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次编写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:42:19