Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Solution 18 and Add Unit Tests #364

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

xxx1l
Copy link

@xxx1l xxx1l commented Nov 30, 2024

  • 学号:2023120261-李璇
  • 问题描述
    在原始实现中,Solution 18 存在以下几个问题:
    空数组处理不当:当输入为空数组时,代码未进行特殊处理,这可能导致运行时异常(如 ArrayIndexOutOfBoundsException)。
    语法错误:存在一些Java语法错误,例如使用了不正确的赋值运算符 === 和错误的循环语句格式。
    缺乏单元测试:缺少对这个函数的单元测试,使得难以验证其正确性。
  • 修改思路及具体步骤
    为了修复这些问题并提高代码质量,我进行了以下具体修改:
  1. 处理空数组情况
    在方法开始处增加了对输入数组长度的检查。如果nums.length == 0,则直接返回一个空数组。这样可以避免访问不存在的数组元素导致的异常。
    代码片段:
if (length == 0) {
    return new int[0];
}
  1. 修正语法错误
    将所有的 === 替换为正确的赋值运算符 =,以符合Java语法规范。
    修正了循环体内的语法错误,例如将 for {int i = 0; i < length; i++} 改正为 for (int i = 0; i < length; i++)。
    修正了数组访问的方式,从 L(i) 更改为 L[i],确保语法正确。
    代码片段:
for (int i = 1; i < length; i++) {
    L[i] = nums[i - 1] * L[i - 1];
}
  1. 优化代码结构与注释
    确保所有变量声明和初始化都遵循最佳实践,并保持代码的一致性和可读性。
    添加了适当的注释来解释关键逻辑部分,帮助其他开发者理解代码意图。
    代码片段:
// L[i] 表示索引 i 左侧所有元素的乘积
// 对于索引为 '0' 的元素,因为左侧没有元素,所以 L[0] = 1
L[0] = 1;
  • 添加单元测试
    使用JUnit 5框架编写了一系列单元测试,使用等价类分析、边界值分析、错误推测等多种设计测试用例的方法,涵盖了多种输入场景,包括常规情况、包含零的情况、单元素数组以及空数组等。
    每个测试用例都验证了特定条件下的输出是否符合预期,确保算法在不同情况下都能正常工作。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant