在Java中条件总是抛出异常

osh3o9ms  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(137)

我正在尝试使用Java中的数组,特别是在一个方法中,删除由param传递的一个元素的第一次出现(或者在本例中,使匹配的值转换为0),在这个方法中,如果匹配的值没有出现在数组中,我使用一个可抛出的异常,但由于任何原因,这个异常总是被抛出。
下面是该方法的代码:

public static void deleteElement(int[] array, int element) throws Exception {
        for (int i = 0; i < array.length; i++) {
            if (array[i] == element) {
                array[i] = 0;
                break;
            } else if (array[i] != element) {
                throw new Exception("Element not found");
            }
        }
    }

当我像这样调用方法时:

int[] array = new int[10];

try (Scanner sc = new Scanner(System.in)) {
            for (int i = 0; i < array.length; i++) {
                System.out.print("Introduce un numero: ");
                array[i] = sc.nextInt();
            }
        }

try {
    Arrayaba.deleteElement(array, 10);
} catch (Exception e) {
    e.printStackTrace(); // The exception is always throwed
}

显示下一个错误:

java.lang.Exception: Element not found
        at LibreriaArraysBoludos.Arrayaba.deleteElement(Arrayaba.java:104)
        at TestArrayaba.main(TestArrayaba.java:23)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)
        at jdk.compiler/com.sun.tools.javac.launcher.Main.execute(Main.java:434)
        at jdk.compiler/com.sun.tools.javac.launcher.Main.run(Main.java:205)
        at jdk.compiler/com.sun.tools.javac.launcher.Main.main(Main.java:132)

如果需要任何额外的信息,请告诉我。提前感谢:)

mbzjlibv

mbzjlibv1#

只有在访问了所有数组,而不是第一个不同的元素时,才必须引发异常

public static void deleteElement(int[] array, int element) throws Exception {
        for (int i = 0; i < array.length; i++) {
            if (array[i] == element) {
                array[i] = 0;
                return;
            }
        }
        throw new Exception("Element not found");
    }
ql3eal8s

ql3eal8s2#

你是说如果这个array[i]不等于for中指定的元素,就会抛出异常,首先i=0,array[i]=element与否,如果是就是0,如果不是就抛出异常,这是你的代码说的,在这种情况下,这段代码只在array[0]=element时才起作用,如果不是,抛出异常。您要查找的内容如下所示:

public static void deleteElement(int[] array, int element) throws Exception {
        for (int i = 0; i < array.length; i++) {
            if (array[i] == element) {
                array[i] = 0;
                break;
            } 
          }
                throw new Exception("Element not found");
        }

相关问题