0

i'm a starter java android programmer, And i'm trying to think on function that will check if there's more than one same number in array, if it does place a new random numbers in the array This is what i got:

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

But i dont know how to do a check after i used the function putTextOnButtons() Thanks in advance! Never mind, i got it i used recursion like that:

   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);
    }
}
Gal Israel
  • 83
  • 1
  • 2
  • 7
  • if you want to check for , is there are two same no's in the array even after calling putTextOnButtons() – shiv garg Jan 31 '15 at 21:26
  • This is best done with a data structure that does not allow duplicates (as in: a Set). If you need to maintain the order of elements, use an ordered set. – Jan Groth Jan 31 '15 at 21:29

3 Answers3

0

You can check this manually, or with a Set.

Manual check:

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
}

Check with a Set:

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
}
Dávid Horváth
  • 4,050
  • 1
  • 20
  • 34
0

Give this a go and tell me whether it works! Peace.

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

Community
  • 1
  • 1
Diego Fortes
  • 207
  • 2
  • 9
0

Do this

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;
        }
    }
}
Rohit5k2
  • 17,948
  • 8
  • 45
  • 57