Getting unexpected return value when appending to array

It may be part of Java’s shady black magic when managing memory for you. Try creating a new set object inside the for loop like so?

  String[][] setsOnBoard(String[] cards, int numOfCards, String blank) {
  String[][] sets = new String[0][3];
  
  
  for (int i = 0; i < numOfCards - 2; i++) {
    if (cards[i] == blank) {
      continue;
    }
    for (int j = i + 1; j < numOfCards - 1; j++) {
      if (cards[j] == blank) {
        continue;
      }
      for (int k = j + 1; k < numOfCards; k++) {
        if (cards[k] == blank) {
          continue;
        }

        String[] threeCards = new String[3];
        threeCards[0] = cards[i];
        threeCards[1] = cards[j];
        threeCards[2] = cards[k];

        if (checkSet(threeCards)) {
          sets = (String[][])append(sets, threeCards);
          println(sets[0]);
        }
      }
    }
  }
  println(sets[0]);
  return sets;
}
1 Like