我的主要任务是工作(翻译):
编写一个方法,该方法从1d数组返回最小的数字 整数。
现在我必须做一个附带任务(粗略翻译):
添加一条if语句以检查数组是否为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;
答案 0 :(得分:3)
首先,数组的大小为非负数,因此array1.length
不能为-1,而是与0
进行比较。
第二,分配int smallest = array1[0];
尝试访问空数组的第0个位置,这将导致java.lang.ArrayIndexOutOfBoundsException
。
因此,最后,将赋值移动到else块中的smallest
并检查条件是否为空或空数组,然后再尝试访问任何数组值。
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;
}
答案 1 :(得分:1)
public static int smallestNumber (int[] array1) {
if (array1 == null || array1.length == 0) {
return 0;
}
int smallest = array1[0];
for (int element : array1) {
if (element < smallest) {
smallest = element;
}
}
return smallest;
}
答案 2 :(得分:1)
请尝试先检查null,因为先检查该null更安全。您还可以使用isEmpty()方法作为长度。
public static int smallestNumber (int[] array1) {
if (array1 == null) {
return 0;
}
if (array1.isEmpty()) {
return 0;
}
int smallest = array1[0];
for (int element : array1) {
if (element < smallest) {
smallest = element;
}
}
return smallest;
}
或将其添加为替代项:
public static int smallestNumber (int[] array1) {
if (array1 != null) {
if (array1.isEmpty()) {
return 0;
}
int smallest = array1[0];
for (int element : array1) {
if (element < smallest) {
smallest = element;
}
}
return smallest;
} else {
return 0;
}
}