2

java新手。

我正在尝试在java中实现一些基本算法。

但是我无法考虑这个基本情况..

public int[] sort(int[] input){

 if (input.length == 0 ) // return error?? but how

 if (input.length == 1) return input

 //sorting algo

}

什么是为空数组抛出错误的好方法?

4

4 回答 4

3

给定一个空数组,函数不应该负责sort返回错误,它应该只返回一个空数组。一个表现良好的通用函数不应该因为在正常情况下是一个完全有效的输入而引发错误。

如果由于某些其他语义原因,空数组是错误的,则应该由函数的调用者事先检测到。

如果在您的特定应用程序中,您希望避免在每次sort调用之前重复执行零长度检查,请编写一个显式调用零长度行为的包装函数,然后调用它,例如:

public int[] sortNonEmptyArray(int[] input) {
    if (input.length == 0) {
         throw new IllegalArgumentException("empty array passed");
    }
    return sort(input);
}
于 2013-09-01T16:59:54.357 回答
1

您可以返回IllegalArgumentException并显示不允许空数组作为参数的消息,或者您可以定义自己的自定义错误类。第一个更可取,因为它更简单。

但是,如果您使用某种分而治之的排序算法,您可能会遇到麻烦,并且在递归的一个步骤中,您将一个空数组传递给此方法,该方法被视为已排序(零元素的排序数组,是的,这可能发生)。在这种情况下,您应该简单地将空数组作为返回值返回(它也将构成递归的基本条件之一)。

于 2013-09-01T16:58:19.577 回答
1
  public int[] sort(int[] input) {
     if (input==null||input.length == 0) {
          throw new IllegalArgumentException("empty array");
     }
     //sorting algo
     return input;
  }
于 2013-09-01T17:15:51.423 回答
0

我会遵循设置的约定java.util.Arrays#sort并返回空数组。

Java 文档

于 2013-09-01T17:00:31.340 回答