动态数字斜塔
动态数字斜塔
目录
实验概述
本次实验成功实现了通过JSP页面输出动态数字斜塔的功能,采用了两种不同的实现方法,深入理解了JSP脚本技术的应用。
实现方法分析
方法一:直接计算输出(test.jsp)
- 思路:通过数学公式直接计算每行的数字,无需存储中间结果
- 优点:内存效率高,计算直接
- 代码特点:
//获取输入的数字 int num = Integer.parseInt(request.getParameter("num")); //每行的输出个数 int count = num; //m表示每一行已经输出多少个数,n表示上一行的开头第一个数字和下一行开头的差值,f表示每行第一个数字 int m = 0,f=1,n=0; for (int i = 0; i < num; i++) { //k表示每行相邻数值的插值 int k = i + 1; m = 0; for (int j = f; m < count - i; j = j + k) { out.print(j + " "); k++; m++; } out.println("<br>"); n++; f=f+n; }
方法二:二维集合存储(test1.jsp)
- 思路:先构建完整的数字三角形,再按斜线输出
- 优点:逻辑清晰,易于理解和调试
- 代码特点:
//获取输入的数字 int num = Integer.parseInt(request.getParameter("num")); // 创建二维集合,用来存放数字 ArrayList<ArrayList<Integer>> a = new ArrayList<>(); int sum = 0; // 第一步:按行生成数字,存入二维集合 for (int i = 0; i < num; i++) { a.add(new ArrayList<>()); // 每一行新建一个集合 for (int j = 0; j <= i; j++) { // 第i行有i+1个数字 sum++; a.get(i).add(sum); // 把数字存入第i行 } } // 第二步:斜着输出 ,形成数字斜塔 for (int k = 0; k < num; k++) { for (int j = 0, i = k; j < num - k && i < a.size(); j++, i++) { out.print(a.get(i).get(j) + " "); } out.println("<br>"); // 换行 }
关键技术点
1. JSP参数处理
- 使用
request.getParameter()获取表单输入 Integer.parseInt()进行类型转换- 添加了输入验证和错误处理
2. 数字生成逻辑
- 方法一:通过递增步长生成数字序列
- 方法二:先构建完整的数字三角形,再按对角线输出
3. 输出控制
- 使用
out.print()和out.println()控制输出格式 - HTML
<br>标签实现换行
实验成果
成功实现的功能
-
创建了用户输入界面(index.html)
-
实现了两种不同的数字斜塔生成算法
-
在本地Eclipse和云端服务器上成功运行
-
输出格式符合要求,数字按斜塔形式排列
输出示例(num=8)

调试过程与问题解决
遇到的问题
-
参数传递问题:初期的表单提交方式导致参数获取失败
- 解决:确保表单method正确设置为post,action指向正确的JSP文件
-
数字计算错误:初始算法生成的数字序列不正确,没有考虑到每行第一个数字大小
- 解决:仔细分析数学规律,调整步长和起始值
-
输出格式问题:数字排列不整齐
- 解决:调整循环条件和输出控制
调试技巧
-
添加中间变量输出,观察计算过程
-
分步验证每行数字的生成
-
使用不同的测试数据验证算法正确性
实验心得
-
一题多解的收获:通过两种不同方法实现相同功能,加深了对算法设计的理解
-
JSP技术掌握:熟练掌握了JSP脚本编程、参数处理和输出控制
-
调试能力提升:学会了通过逐步调试和日志输出定位问题
-
团队协作:通过分工合作,提高了开发效率和代码质量
-
后续: 可以通过css美化界面样式,寻找更高效的方法
实验意义
本次实验不仅掌握了JSP编程技术,还培养了:
-
问题分析和算法设计能力
-
代码实现和调试技能
-
团队协作和项目管理经验
-
从本地开发到云端部署的完整流程
通过本次实验,我们对Web编程技术有了更深入的理解,为后续的Web开发项目奠定了坚实基础。

浙公网安备 33010602011771号