Java 中的异常数组搜索

array search with exception in 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);

    }
}

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

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));

    }
}

正如我在评论中指出的那样,在数组中搜索缺失元素时抛出异常并不是真正的最佳解决方案,但在另一条评论中你说这是一项要求,所以就这样吧。

我们需要做几件事

  1. 我们将抛出一个自定义异常,因为标准库中没有针对“我没有在数组中找到元素”的异常,并且有充分的理由;
  2. arraySearch方法需要声明抛出异常
  3. arraySearch方法应该return一个值,而不是打印它
  4. 如果没有值被 returned(即如果我们到达循环的末尾并且还没有 returned)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");
        }
    }
}

最后,我怀疑你误解了你的作业,你实际上需要 return 你找到的元素的 index,而不是它的值(这不是很有用).我会把它作为练习留给你解决。