2014-09-01 56 views
-1

我有一个数组有5个随机数。像这样:Java比较彩票号码

int correct[] = {11,23,54,13,5}; 

我有另一个数组,用户的猜测。像这样:

int userGuesses[] = {23,5,5,11,50}; 

我想查找用户猜错lotter数字的次数,所以无法重复。 如果userGuesses有两个相同的数字并且用户猜测正确,但correct[]只有一个值,而不是两个,那么程序不应该对此进行计数。

这是我到目前为止。

public static void main(String[] args) {   
    int correct = 0;   
    int good[] = {1,2,3,4,5};  
    int bad[] = {2,1,5,5,12,3};  

    for (int i = 0; i < 5; i++) { 
     if(good[i] == bad[i]){ 
      correct++; 
     } 
    }  

    System.out.println(correct);   
} 
+1

你应该有嵌套循环;第一个阵列的外部运行,第二个阵列的内部运行。 – Maroun 2014-09-01 11:49:30

+0

请给我看看新版本,然后我会接受它 – 2014-09-01 11:51:11

+0

请自己动手 – Antoniossss 2014-09-01 11:51:42

回答

3

尝试是这样的:

int correct = 0; 
int good[] = {1, 2, 3, 4, 5}; // correct answers 
int bad[] = {2, 1, 5, 5, 12, 3}; // user guesses 

for (int i = 0; i < good.length; i++) { 
    for (int j = 0; j < bad.length; j++) { 
     if (good[i] == bad[j]) { 
      correct++; 
      break; 
     } 
    } 
} 

System.out.println(correct); 

好吧,我写了一个小型的Java程序和它的实际工作。实际答案应该是4,因为用户猜测(假设'坏'数组是用户的猜测)数字:1,2,3和5,我们不计算两次。

+1

它给出4,最重要的答案是3 – 2014-09-01 11:54:24

0

将要测试的值复制到临时数组中。然后,在找到匹配项时更改临时数组中的值。

int correct = 0; 
int[] temp_array = bad.clone();// copy values to be tested into temp array 

for(int i = 0; i < good.length; i++) 
{ 
    for(int j = 0; j < bad.length; j++) 
    { 
     if(good[i] == temp_array[j])// match found 
     { 
     correct++;// increment correct 
     temp_array[j] = -999;// change value to out-of-range 
     break; 
     } 
    } 
} 

System.out.println("number correct is " + correct);