Java比较彩票号码

时间:2014-09-01 11:46:30

标签: java arrays for-loop random

我有一个包含5个随机数的数组。像这样:

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

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

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

我想找到用户正确猜出抽签号码的次数,因此无法重复。 就像userGuesses有2个相同的数字并且用户猜对了,但是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);        
}

2 个答案:

答案 0 :(得分: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,因为用户猜测(假设&#39;不良&#39;数组是用户的猜测)数字:1,2,3和5,我们不计算两次。

答案 1 :(得分: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);