编辑:问题解决了,谢谢你们。也感谢您的其他提示!
我正在CodeWars中做一个4kyu kata,叫做"蜗牛"(使用JAVA(。一切正常,所有测试都通过了,而不是一个 - "空箱"。
此测试的日志显示:
[[]] should be sorted to []
所以我猜,"如果一个数组是空的,我也应该返回一个空数组"。
下面我介绍我的方法的开始:
public static int[] snail(int[][] array) {
if ((array.length==0)) {
int[] result = new int[0];
return result;
}
if ((array==null)) {
int[] result = null;
return result;
}
我还尝试为这两种情况返回 null,然后我也尝试在这两种情况下返回空数组......
任何想法如何通过这个空案例测试?
我认为外部数组包含内部数组,因此它的长度等于 1 - 不是吗?内部数组不包含任何内容,因此应检查一个。
您的第一个if
条件的计算结果是true
iff 该方法是使用像new int[0][]
一样初始化的数组调用的 - 其中array.length
0
。测试日志告诉您考虑一种情况,其中array.length
1
并且array[0].length
0
,例如,有人初始化并分配了数组,例如
int[][] array = new int[1][];
array[0] = new int[0];
只是为了可读性 - 您的if
条件每个都有一对额外的括号。
确定代码中问题的步骤:
- 阅读说明。
- 认识到 [] 不是
null
。 - 查看您的代码; 观察输入为空时返回 null。
- 接受 [] 不是
null
。 - 当输入为空时返回并清空数组。
- 了解
array.length
保证在array
为空时抛出 NullPointerException。 - 在尝试取消引用
array
参数之前测试null
。