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 ответа
Ваше заявление:
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]);
И, вероятно, вы получите недублированные значения.
В вашем коде нет ошибки, он печатается дважды из-за
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
*
*
*