キャプテンアップル:
私は仕事(粗訳)に私の主な仕事を得ました:
整数の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;
}