数组搜索在Java中有例外



你能帮我一下吗?我需要在数组中找到一个值,如果没有这样的值,则对其进行例外处理。我在一个循环中使用if else,它是打印4次NOT FOUND。非常感谢。

public class Search {
public static int arraySearch(int [] array, int value){
for(int i = 0; i < array.length; i++){
if(array[i] == value){
System.out.println(value);
}
}

}

public static void main(String[] args) {
int [] array = { 23, 6, 9, 10};
arraySearch(array, 6);
}
}

正如我在评论中指出的那样,在搜索数组中缺少的元素时抛出异常并不是最好的解决方案,但在另一个评论中您说这是必需的,所以它开始了。

我们需要做几件事

  1. 一个我们要抛出的自定义异常,因为在标准库中没有"我没有在数组中找到一个元素"的异常,并且有很好的理由;
  2. arraySearch方法需要声明它抛出异常
  3. arraySearch方法应该返回一个值,而不是打印它
  4. 如果没有返回值(即如果我们到达循环结束但尚未返回),arraySearch应该抛出我们自定义的异常
  5. main需要捕获异常并采取相应的行动

下面是代码。一定要理解它,不要只是复制粘贴。

public class Search {
private static class ElementNotFoundException extends Throwable {}
public static int arraySearch(int [] array, int value) throws ElementNotFoundException {
for(int i = 0; i < array.length; i++){
if(array[i] == value){
return value;
}
}
throw new ElementNotFoundException();
}

public static void main(String[] args) {
int [] array = { 23, 6, 9, 10};
try {
System.out.println(arraySearch(array, 60));
} catch (ElementNotFoundException e) {
System.out.println("Element not found");
}
}
}

最后,我怀疑您误解了作业,实际上您需要返回找到的元素的索引,而不是它的值(这不是很有用)。我把它留给你们作为练习来解决。

这是一种方法。实际的异常抛出可以内建。

public class Search {
public static int arraySearch(int[] array, int value) {
int result = -1;
for (int i = 0; i < array.length && result < 0; i++) {
if (array[i] == value) {
// Found! We want to know the index. We know the value
result = i;
}
}
return result;
}

public static void main(String[] args) {
int[] array = { 23, 6, 9, 10 };
System.out.println(arraySearch(array, 6));
}
}

最新更新