你能幫我解決這個問題嗎?我需要在陣列中找到一個值,如果沒有這樣的值,則對其進行例外處理。如果在一個回圈中,我做了 4 次未找到列印。非常感謝你。
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);
}
}
uj5u.com熱心網友回復:
正如我在評論中指出的那樣,在陣列中搜索缺失元素時拋出例外并不是最好的解決方案,但在另一條評論中你說這是一個要求,所以就這樣吧。
我們需要做幾件事
- 我們將拋出一個自定義例外,因為標準庫中沒有“我沒有在陣列中找到元素”的例外,這是有充分理由的;
- 該
arraySearch方法需要宣告它拋出例外 - 該
arraySearch方法應該回傳一個值,而不是列印它 - 如果沒有回傳值(即如果我們到達回圈的末尾并且還沒有回傳)
arraySearch應該拋出我們的自定義例外 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");
}
}
}
最后,我懷疑你誤解了你的作業,你實際上需要回傳你找到的元素的索引,而不是它的值(這不是很有用)。我將把它作為練習留給你解決。
uj5u.com熱心網友回復:
這是一種方法。可以內置實際的例外拋出。
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));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/469979.html
上一篇:Haskell中的“修復”是什么?為什么“修復錯誤”會列印一個無限的字串?為什么“take10$fixerror”也一樣呢?
