我花了大約一個小時試圖弄清楚這一點,但我做不到。這是我正在學習的 Java 選修課程的練習,我可以使用一些幫助。
撰寫一個方法 linearSearch(),它接受一個整數陣列和一個整數值。然后它應該回傳陣列內值的索引(通過使用 for 回圈按順序一一遍歷元素)。如果未找到該值,則應回傳 -1。如果找到多個值,則應回傳第一個出現的值。撰寫一個程式來測驗你的方法。
所以這就是我嘗試做的。
public class Exercise6 {
public static void main(String [] args) {
int[] a = {3, 6, 70, 3, 7, 9};
linearSearch(a, 3);
}
public static void linearSearch(int[] a, int n){
int index;
for (int i = 0; i < a.length; i ){
if (a[i] == n){
index = i;
break;
}
else {
index = -1;
}
}
System.out.print(index);
}
}
但這顯然是錯誤的。你能指出我正確的方向嗎?我不一定要你給我答案,只是給我一個關于步驟的想法。
uj5u.com熱心網友回復:
有幾個問題。
您想回傳一個值,因此您需要通過回傳型別為
intand not在方法中顯示該值void。你不需要索引變數,你的 for 回圈中已經有一個,
(i)所以使用它。當您遍歷回圈時,一旦找到值,只需執行 a
return i;即可回傳索引。您的方法中不需要任何break陳述句。你不需要繼續分配
-1給索引,所以擺脫else clause(記住你甚至不需要index)。如果您完成回圈,則該值必須不存在
return -1;。最后,由于您要回傳一個值,因此您需要在呼叫該方法時對其進行分配。就這樣吧
int ret = linearSearch(a, 3);。然后列印值。
uj5u.com熱心網友回復:
問題是您沒有初始化變數(索引):
int index = -1;
但是您應該以另一種方式思考:
1 - 閱讀你想做的事
2-您需要創建一個回傳陣列特定值索引的函式
3-定義函式的回傳型別==>你需要回傳索引然后函式回傳型別是int
4-定義引數==>你有2個引數:陣列和值
5-您應該回傳值的索引,如果不存在則回傳-1,然后您將初始化索引= -1
6-代碼如下:
public class Exercise6
{
public static int linearSearch(int[] a, int n){
int index = -1;
for (int i = 0; i < a.length; i ){
if (a[i] == n){
index = i;
break;
}
}
return index;
}
public static void main(String[] args) {
int[] a = {3, 6, 70, 3, 7, 9};
System.out.println(linearSearch(a, 7));
}
}
編碼前三思
一切順利
uj5u.com熱心網友回復:
這將通過int index;未初始化的編譯錯誤。一旦初始化,否則部分將變得多余。休息會作業并為您提供預期的輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/449389.html
下一篇:創建R函式
