我正在尝试使用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)
如果需要任何额外的信息,请告诉我。提前感谢:)
2条答案
按热度按时间mbzjlibv1#
只有在访问了所有数组,而不是第一个不同的元素时,才必须引发异常
ql3eal8s2#
你是说如果这个array[i]不等于for中指定的元素,就会抛出异常,首先i=0,array[i]=element与否,如果是就是0,如果不是就抛出异常,这是你的代码说的,在这种情况下,这段代码只在array[0]=element时才起作用,如果不是,抛出异常。您要查找的内容如下所示: