2017-05-05 42 views
1

到目前爲止,我可以隨機生成20個號碼,但是當我想搜索我的隨機20號碼時,它總是顯示「您輸入的號碼找不到」爲什麼?我如何搜索來自我生成的號碼的價值?如果有人能教我如何去做會很開心。爲什麼我無法搜索我的隨機生成值?

package labtask.pkg5; 
import java.util.Scanner; 
import java.util.Random; 

public class Labtask5 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     int search = 1; 
     int[] array = new int[20]; 
     Scanner read = new Scanner(System.in); 
     Random r = new Random();   //generate random number 
     for (int x = 0; x < 20; x++) { 
      System.out.println(r.nextInt(100)); 
     } 
     while (search != 0)    //Search for a number 
     { 
      System.out.println("Search a number"); 
      search = read.nextInt(); 
      if (SearchValue(search, array) == true) { 
       System.out.println("The number you enter been found"); 
      } else { 
       System.out.println("The number you enter did not found"); 
      } 
     } 
    } 

    public static boolean SearchValue(int search, int[] array) { 
     for (int y = 0; y < 20; y++) { 
      if (search == array[y]) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
     return true; 
    } 
} 
+3

你應該分配產生的數以aour陣列 – XtremeBaumer

回答

3

1件事:

僅打印20個隨機數字,但沒有分配給它放入數組:

for (int x = 0; x<20; x++){ 
    System.out.println(r.nextInt(100));  
} 

做,而不是:

for (int x = 0;x<20;x++) { 
    array[x] = r.nextInt(100); 
    System.out.println(array[x]); 
} 

另方法:

SearchValue(int search, int[] array) 

在數組中檢查第1個要素後immediantly將一些布爾,你需要瀏覽整個數組,而不是...

做的卻是這樣的:

public static boolean SearchValue(int search, int[] array) { 

    for (int y = 0; y < 20; y++) { 
     if (search == array[y]) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

THX傢伙的幫助:)欣賞它:)大THX:d – sozai

4

你的第一個問題是這個功能:

public static boolean SearchValue(int search, int[] array) { 
    for (int y = 0; y < 20; y++) { 
     if (search == array[y]) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
    return true; 
} 

你會總是返回true或在循環的第一次迭代假你永遠不會過去y = 0

此外,您不需要對值20進行硬編碼。數組知道它自己的大小。

我希望它可以像:

public static boolean SearchValue(int search, int[] array) { 
    for (int y = 0; y < array.length; y++) { 
     if (search == array[y]) { 
      return true; 
     } 
    } 
    return false; 
} 
+1

和數組仍然是滿的的0.兩個答案都是互補的;) – AxelH

+0

thx micheal ...非常感謝它....我可以知道我的第二個問題? – sozai

相關問題