为什么我在 JAVA 中的空案例测试失败?



编辑:问题解决了,谢谢你们。也感谢您的其他提示!

我正在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条件的计算结果是trueiff 该方法是使用像new int[0][]一样初始化的数组调用的 - 其中array.length0。测试日志告诉您考虑一种情况,其中array.length1并且array[0].length0,例如,有人初始化并分配了数组,例如

int[][] array = new int[1][];
array[0] = new int[0];

只是为了可读性 - 您的if条件每个都有一对额外的括号。

确定代码中问题的步骤:

  1. 阅读说明。
  2. 认识到 [] 不是null
  3. 查看您的代码; 观察输入为空时返回 null。
  4. 接受 [] 不是null
  5. 当输入为空时返回并清空数组。
  6. 了解array.length保证在array为空时抛出 NullPointerException。
  7. 在尝试取消引用array参数之前测试null

最新更新