java中的新手。
我正在尝试在java中实现一些基本算法。
但我无法考虑这个基本情况......
public int[] sort(int[] input){
if (input.length == 0 ) // return error?? but how
if (input.length == 1) return input
//sorting algo
}
什么是为空数组抛出错误的好方法?
答案 0 :(得分:3)
sort
函数不应该在给定空数组的情况下返回错误,它应该只返回一个空数组。一个表现良好的泛型函数不应该抛出错误,因为在正常情况下它是完全有效的输入。
如果一个空数组是某个其他语义原因的错误,那么事先应该由函数的调用者检测。
如果在您的特定应用程序中,您希望避免在每次sort
调用之前重复执行零长度检查,请编写一个显式调用零长度行为的包装函数,然后调用它,例如:
public int[] sortNonEmptyArray(int[] input) {
if (input.length == 0) {
throw new IllegalArgumentException("empty array passed");
}
return sort(input);
}
答案 1 :(得分:1)
您可以返回IllegalArgumentException,并显示一条消息,指出不允许使用空数组作为参数,或者您可以定义自己的自定义错误类。第一个是更好的,因为它更简单。
但是,如果使用某种divide-and-conquer排序算法,可能会遇到麻烦,并且在递归的一个步骤中,您将一个空数组传递给此方法,该方法被视为已排序(排序数组为零元素) ,是的,那可能发生)。在这种情况下,您应该简单地将空数组作为返回值返回(它也将在递归中形成您的基本条件之一)。
答案 2 :(得分:1)
public int[] sort(int[] input) {
if (input==null||input.length == 0) {
throw new IllegalArgumentException("empty array");
}
//sorting algo
return input;
}
答案 3 :(得分:0)
我会遵循java.util.Arrays#sort
中设置的约定并返回空数组。