我目前正在學習 Java 課程的在線介紹,但我堅持使用這種方法。目標是在假冒的數字商店中提供搜索功能,其中此方法中的回傳值在另一種方法中參考,以提供搜索詞的產品 ID。如果搜索詞與 products 陣列中的任何內容都不匹配,我特別需要回傳 -1。當我嘗試運行它時,我收到一條錯誤訊息,指出此方法缺少回傳陳述句。誰能幫我理解為什么我的退貨宣告不起作用?我需要提供更多資訊嗎?
String[] products = {...}; //instance variable
public int findProduct(String searchText) {
for (int i = 0; i < products.length; i ) {
String product = products[i];
if (searchText.equals(product)) {
return i;
} else {
return -1;
}
}
}
uj5u.com熱心網友回復:
洗掉 else 陳述句并將 return -1 移到 for 回圈之外。
return 陳述句將停止 for 回圈,這可能不是你想要的
uj5u.com熱心網友回復:
您希望 -1 在回圈之外,因為如果沒有匹配的元素,您不想在最后回傳它,這樣您將在評估第一個不匹配的元素后回傳 -1。
public int findProduct(String searchText) {
for (int i = 0; i < products.length; i ) {
String product = products[i];
if (searchText.equals(product)) {
return i;
}
}
return -1;
}
你所做的將在 Go 中使用 yield tho ;)
uj5u.com熱心網友回復:
這是因為在運行時之前,如果 products.length() 等于 0,java 現在不會。因此,如果它為 0,則執行任何回傳陳述句,因為 for 回圈不進行任何迭代。
然后 IDE 會告訴您需要添加 return 陳述句以防 products.length() 回傳 0。
uj5u.com熱心網友回復:
您的函式正在回圈運行。如果回圈結束會發生什么?想想這個例子
findProducts("");
如果我使用空字串作為引數呼叫該函式,它將跳過回圈然后......好吧......
之后沒有回傳,這在 Java 中只是一個錯誤,因為你的函式告訴編譯器它總是回傳一個 int。因此,您的編譯器檢測到可能缺少 return 陳述句,并且該錯誤試圖說明什么
一個簡單的解決方案是在回圈之后添加另一個回傳,以便您也可以處理這些情況,并且您保證始終回傳一個 int。大概是這樣的:
public int findProduct(String searchText) {
for (int i = 0; i < products.length; i ) {
String product = products[i];
if (searchText.equals(product)) {
return i;
} else {
return -1;
}
}
return -1;
}
你去吧。請記住,如果您使用特定的回傳型別宣告您的函式,它應該總是回傳該型別的東西。否則會報錯
uj5u.com熱心網友回復:
創建函式時,請確保首先插入回傳值以進行跟蹤。
for 回圈不會停止您的游標到達函式的底部。
public int findProduct(String searchText) {
for (int i = 0; i < products.length; i ) {
String product = products[i];
if (searchText.equals(product)) {
return i;
}
}
return -1;
}
我建議不要將比較值插入到 temp 中,而是直接迭代陣列進一步閱讀
https://www.geeksforgeeks.org/check-if-a-value-is-present-in-an-array-in-java/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/527236.html
標籤:爪哇数组for循环返回
