【问题标题】:Java compare Lottery numbersJava比较彩票号码
【发布时间】:2014-09-01 11:46:30
【问题描述】:

我有一个包含 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);        
}

【问题讨论】:

  • 你应该有嵌套循环;外部运行在第一个数组上,内部运行在第二个数组上。
  • 请给我看新版本,然后我会接受它
  • 请自己做
  • 这段代码在我看来没问题。我看不出问题出在哪里,只是一个数组太大了。
  • 他们需要在同一个位置吗?因为你所拥有的东西不会算5 两次。它甚至不会计算一次。

标签: java arrays for-loop random


【解决方案1】:

试试这样的:

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,因为用户猜测(假设 'bad' 数组是用户的猜测)数字:1、2、3 和 5,我们不计算两次。

【讨论】:

    【解决方案2】:

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

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2016-02-04
      • 1970-01-01
      • 2019-03-27
      相关资源
      最近更新 更多