Array with 2 of the same value


#1

Hello, im trying to make an array using a for loop that contains two of the same values. It would like like this if you write it out.
int [] cardSets= {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15,
16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31};

the loop as it is now, looks like this:

int [] cardSets = new int[amountOfSets];

void cardSetsArray()  {
   for(int i = 0; i < cardSets.length -1; i++) {
      cardSets[i] = 0 + i;
      cardSets[i + 1] = 0 + 1;
}

So what im trying to create, is an array with the same value twice, based off of the length that is picked with amountOfSets.
However this creates an array where only the last two indexes are the same value.


#2

Hi,

Please, edit your post and format your code. It is all explained here: Guidelines—Tips on Asking Questions
EDIT: Thanks :slight_smile:

The problem with your code is that your are looping one increment at a time so even if inside your loop you assign the 2 same values you erase that value in the second increment. Since example speaks more than words:

  • First loop: i = 0
    • kaartSets[0] = 0
    • kaartSets[1] = 0

Everything is ok here but look what happens in the second loop:

  • Second loop: i = 1 -> Only one increment:
    • kaartSets[1] = 1
    • kaartSets[2] = 1

Now you start to mess things up because you are changing the value of the element [1].

Now, you have several way to achieve what you want to do, here’s one:

int [] cardSets = new int[amountOfSets];
int value = 0

void cardSetsArray()  {
  for(int i = 0; i < cardSets.length -1; i+=2) {
    cardSets[i] = value;
    cardSets[i + 1] = value;
    value++;
  }
}

#4

Ah yes i see, thanks for showing me. This helped a lot and sorry for forgetting to format my code!


#5
/**
 * Same Value Pair Array (v1.0)
 * GoToLoop (2018/Oct/26)
 * https://Discourse.Processing.org/t/array-with-2-of-the-same-value/4892/5
 */

static final int SIZE = 64;
final int[] cardSets = new int[SIZE];

void setup() {
  fillArraySameValuePair(cardSets);
  println(cardSets);
  exit();
}

static final int[] fillArraySameValuePair(final int[] arr) {
  for (int i = 0; i < arr.length; arr[i] = i++ >> 1);
  return arr;
}