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());