2017-01-14 10 views
0

У меня есть небольшая проблема с моим кодом. Я пытаюсь совместить две позиции сканера с расположением массива. он работает, но проблема в том, что код печатает цифры дважды. Как я могу решить эту проблему? Мне также нужно, чтобы печать оставалась видимой, если оба элемента одинаковы. Я уже пытался найти тот же вопрос, но я не мог его найти.Соответствующие местоположения массива 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***** 
+1

Какова цель программы? –

+0

Я пытаюсь сделать игру под названием памяти. u должен угадать все пары, чтобы выиграть игру. и если и не догадались, пара вернется обратно. пока я пытаюсь сделать это шаг за шагом, но только частично удалось. – user7418776

ответ

0

Вашего утверждение:

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]); 

И ваш, вероятно, чтобы получить, не дублированные значения.

+0

tnx для ответа – user7418776

0

Там нет ошибки в коде он печатает два раза из-за

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

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

*
*
*
*
+0

если я меняю его, ничего не происходит из-за того, что! = Печатает '*' над ним. цель кода заключается в том, что он печатает его дважды, но не дважды подряд рядом друг с другом (33 ***). или это не то, что имел в виду? tnx для ответа – user7418776

+0

@ user7418776 Я думаю, что я обновил ответ в соответствии с вашими потребностями. –

+0

tnx для времени и ответа, я попытаюсь найти другой способ сделать это. потому что мне нужно, чтобы она выстроилась в точном месте входа сканера. – user7418776

 Смежные вопросы

  • Нет связанных вопросов^_^