动态数字斜塔

动态数字斜塔


实验概述

本次实验成功实现了通过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> 标签实现换行

实验成果

成功实现的功能

  1. 创建了用户输入界面(index.html)

  2. 实现了两种不同的数字斜塔生成算法

  3. 在本地Eclipse和云端服务器上成功运行

  4. 输出格式符合要求,数字按斜塔形式排列

输出示例(num=8)

image

调试过程与问题解决

遇到的问题

  1. 参数传递问题:初期的表单提交方式导致参数获取失败

    • 解决:确保表单method正确设置为post,action指向正确的JSP文件
  2. 数字计算错误:初始算法生成的数字序列不正确,没有考虑到每行第一个数字大小

    • 解决:仔细分析数学规律,调整步长和起始值
  3. 输出格式问题:数字排列不整齐

    • 解决:调整循环条件和输出控制

调试技巧

  • 添加中间变量输出,观察计算过程

  • 分步验证每行数字的生成

  • 使用不同的测试数据验证算法正确性

实验心得

  1. 一题多解的收获:通过两种不同方法实现相同功能,加深了对算法设计的理解

  2. JSP技术掌握:熟练掌握了JSP脚本编程、参数处理和输出控制

  3. 调试能力提升:学会了通过逐步调试和日志输出定位问题

  4. 团队协作:通过分工合作,提高了开发效率和代码质量

  5. 后续: 可以通过css美化界面样式,寻找更高效的方法

实验意义

本次实验不仅掌握了JSP编程技术,还培养了:

  • 问题分析和算法设计能力

  • 代码实现和调试技能

  • 团队协作和项目管理经验

  • 从本地开发到云端部署的完整流程
    通过本次实验,我们对Web编程技术有了更深入的理解,为后续的Web开发项目奠定了坚实基础。

posted @ 2026-04-10 20:31  穗和  阅读(4)  评论(0)    收藏  举报