2017-05-05 66 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

相关问题