【问题标题】:Checking if there's same variable more than once in array [duplicate]检查数组中是否有多次相同的变量[重复]
【发布时间】:2015-01-31 21:20:20
【问题描述】:

我是一名初学者 java android 程序员,我正在尝试考虑一个函数,该函数将检查数组中是否有多个相同的数字,如果它确实在数组中放置了一个新的随机数 这是我得到的:

        for (int i = 1; i < number.length; i++) {
            if (number[i] == number[i - 1])
                putTextOnButtons();
        }
 private void putTextOnButtons() {

    for (int i = 0; i < 4; i++) {
        int num = rand.nextInt(50) + 1;
        number[i] = num;
    }

但我不知道在使用函数 putTextOnButtons() 后如何进行检查 提前致谢! 没关系,我明白了,我使用了这样的递归:

   private void putTextOnButtons() {

    for (int i = 0; i < 4; i++) {
        int num = rand.nextInt(15) + 1;
        number[i] = num;
        buttons[i].setText(num + "");
        sortArray(number);
        for (int j = 1; j < number.length; j++) {
            if (number[i] == number[i - 1])
                putTextOnButtons();
        }
        sortArray(number);
    }
}

【问题讨论】:

  • 如果你想检查,即使在调用 putTextOnButtons() 之后,数组中是否还有两个相同的 no
  • 最好使用不允许重复的数据结构(如:集合)。如果您需要保持元素的顺序,请使用有序集合。

标签: java android arrays


【解决方案1】:

试一试,告诉我它是否有效!和平。

duplicates=false;
for (j=0;j<number.length;j++)
 for (k=j+1;k<number.length;k++)
   if (k!=j && number[k] == number[j])
   {
     duplicates=true;
     putTextOnButtons();
   }

Source

【讨论】:

    【解决方案2】:

    这样做

    for (i=0;i<number.length;i++)
    {
        for (j=i+1;j<number.length;j++)
        {
            if (j!=i && number[j] == number[i])
            {
                // Get random value
                Random rand = new Random();
                int randomNum = rand.nextInt((max - min) + 1) + min;
                // Insert the random number if duplicate is found
                number[j] = randomNum;
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以手动检查,也可以使用 Set。

      人工检查:

      int[] numbers = new int[]{1, 2, 3, 4, 5, 5, 6};
      boolean found = false;
      for (int i=0; i<numbers.length; i++) {
          for (int j=i+1; j<numbers.length; j++) {
              if (numbers[i]==numbers[j]) {
                  found = true;
                  break;
              }
          }
          if (found) {
              break;
          }
      }
      
      //System.out.println(found);
      
      if (found) {
          // do what you want
      }
      

      用一组检查:

      Integer[] numbers = new Integer[]{1, 2, 3, 4, 5, 5, 6};
      HashSet<Integer> numberSet = new HashSet<Integer>(Arrays.asList(numbers));
      boolean found = (numbers.length>numberSet.size());
      
      //System.out.println(found);
      
      if (found) {
          // do what you want
      }
      

      【讨论】:

        猜你喜欢
        • 2013-02-18
        • 2021-08-18
        • 2021-02-09
        • 2012-12-09
        • 2019-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        相关资源
        最近更新 更多