Java 列表<;字符串>@从最后一个索引中删除null的测试

Java 列表<;字符串>@从最后一个索引中删除null的测试,java,list,assertion,Java,List,Assertion,我做了这个方法: public static List<String> getPascalTriangle(int size) { if(size <= 0) { throw new IllegalArgumentException("Size of a triangle cannot be negative number or equal to 0"); } List<String> tr

我做了这个方法:

  public static List<String> getPascalTriangle(int size) {
        if(size <= 0) {
            throw new IllegalArgumentException("Size of a triangle cannot be negative number or equal to 0");
        }
        List<String> triangle = new ArrayList<>();
        StringBuilder row = new StringBuilder();
        for (int i = 0; i <= size; i++) {
            int r = i + 1;
            for (int j = size - i; j > 0; j--) {
                row.append(String.format("%2s", ""));
            }
            int num = 1;
            for (int j = 0; j <= i; j++) {
                if (j > 0) {
                    num = num * (r - j) / j;
                }
                row.append(String.format("%4d", num));
            }
            triangle.add(row.toString());
            row.setLength(0);
        }
        triangle.add(row.toString());
        return triangle;
    }
公共静态列表getPascalTriangle(整数大小){

如果(大小我在这里看到至少两个问题: 首先是您提到的问题。您必须在
返回三角形之前删除
三角形。添加(row.toString());
。现在在程序末尾添加空字符串。 第二件事是您的
assertEquals
。您尝试断言两个不同的列表引用。它将返回false。您可以通过检查列表内容来修复此问题

assertEquals(expected.toString(), PascalTriangle.getPascalTriangle(7).toString());

要回答后一个问题,您可以使用一个
@Test
,它使用
try
/
catch
块来确保抛出异常(调用有问题的代码,然后
fail()
。如果它没有跳转到
catch
块,那么它没有抛出它应该抛出的异常),只需删除
三角形即可。添加(row.toString());
在代码末尾,就在
返回之前,这似乎是在
列表中添加额外值的原因。我建议将三角形存储为列表列表(行的外部列表,值的内部列表)?这将解决您的大多数问题,而且使用起来更容易。最多您需要为三角形创建一个简单的打印函数。@Nexevis,谢谢您的帮助!@GreenCoveGuy Try/Catch+1谢谢您的帮助=)
assertEquals(expected.toString(), PascalTriangle.getPascalTriangle(7).toString());