Расположения сопоставления массивов JAVA

У меня небольшие трудности с моим кодом. Я пытаюсь сопоставить две позиции сканера с местоположениями массива. это работает, но проблема в том, что код печатает цифры дважды. Как решить эту проблему?
Мне также нужно, чтобы печать оставалась видимой, если два элемента одинаковы. Я уже пытался найти тот же вопрос, но я не мог найти его.

import java.util.Scanner;

public class memory {
  int[] memoryGeheugen = {1, 3, 1, 4, 3, 5, 2, 5, 2, 4};
  String sterretjes = "*";
  boolean dubbel = false;
  Scanner scan = new Scanner(System.in);
public void run() {
  System.out.println("voer de cijfers in positie 1");
  int raden1 = scan.nextInt();
  System.out.println("voer de cijfer in positie 2");
  int raden2 = scan.nextInt();
  for (int i = 0; i < memoryGeheugen.length; i++) {
    if (memoryGeheugen[i] != memoryGeheugen[raden1]){
      System.out.print(sterretjes);
    }
    else if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2]) {
      System.out.print(memoryGeheugen[raden1]);
      System.out.print(memoryGeheugen[raden2]);
    }
  }
}

public static void main(String[] args) {
  new memory().run();
}

выход:

voer de cijfers in positie 1:
1
voer de cijfer in positie 2:
4

*33**33*****

2 ответа

  1. Нет ошибки в коде он печатает дважды из-за

    System.out.print(memoryGeheugen[raden1]); //raden1 = 1 memoryGeheugen[1] = 3
    System.out.print(memoryGeheugen[raden2]); //raden1 = 4 memoryGeheugen[4] = 3
    

    Это будет печатать

    *33**33****

    Используйте System.out::printlnих в отдельных строках

    if (memoryGeheugen[i] != memoryGeheugen[raden1]){
      System.out.println(sterretjes);
    }
    else if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2]) {
      System.out.println(memoryGeheugen[raden1]);
      System.out.println(memoryGeheugen[raden2]);
    }
    

    Это будет печатать их в отдельных строках

    *
    3
    3
    *
    *
    *

  2. Ваше заявление:

    if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2])
    

    в основном говорит, что memoryGeheugen[raden1] и memoryGeheugen[raden2] равны друг другу.

    Итак, если вы печатаете так:

    System.out.print(memoryGeheugen[raden1]);
    System.out.print(memoryGeheugen[raden2]);
    

    Затем будут напечатаны дублированные значения, поскольку логическое условие определяет их как равные.

    Поэтому закомментируйте вторую или первую строку, поскольку печать обеих строк не требуется, если memoryGeheugen[raden1] = memoryGeheugen[raden2]:

    System.out.print(memoryGeheugen[raden1]);
    //System.out.print(memoryGeheugen[raden2]);
    

    И, скорее всего, вы получите не повторяющиеся значения.