配列がnullまたは空の場合文がチェックする場合は、仕事をしません

キャプテンアップル:

私は仕事(粗訳)に私の主な仕事を得ました:

整数の1Dアレイから最小の数を返すメソッドを書きます。

今私は側タスク(粗訳)を行う必要があります。

配列がnullまたは空の場合文がチェックする場合は追加し、それがある場合は、0を返します。

方法:

public static int smallestNumber (int[] array1) {

    int smallest = array1[0];

    if (array1 == null || array1.length == -1) {
       return 0;
    }

    else {
       for (int element : array1) {
          if (element < smallest) {
           smallest = element;
          }
       }
    }
return smallest;    
}

メイン:

public static void main(String[] args) {
  int[] tab1 = {}; //empty array?
  int smallestNumber = smallestNumber(tab1);
  System.out.printf("The smallest number is: %d", smallestNumber);
}

私はnullをチェックすると方法が動作します。それは空の配列に仕事を文句を言わない理由が、私は混乱しています。

int[] tab1 = {};

編集:私はまたarray1.length == 0で試してみました。

全おかげでガイ:

まず、配列は非負のサイズのものであるので、array1.lengthすることはできません-1、代わりにとの比較を行います0

第二に、割り当てint smallest = array1[0];をもたらす空の配列のアクセス0番目の位置を試みますjava.lang.ArrayIndexOutOfBoundsException

だから、結論にへの割り当てを移動しsmallest、他のブロックで、あなたが任意の配列値にアクセスしようとする前に、空またはnullの配列のための条件をご確認ください。

public static int smallestNumber (int[] array1) {

    int smallest;

    if (array1 == null || array1.length == 0) {
        return 0;
    }

    else {
        smallest = array1[0];
        for (int element : array1) {
            if (element < smallest) {
                smallest = element;
            }
        }
    }
    return smallest;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=201187&siteId=1