2017-01-14 1 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

는이

* 33 ** 33을 인쇄 할 수 있기 때문에

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

의 이중 인쇄 ****

사용 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
*
*
*
을 그들을 인쇄합니다
+0

만약 내가 그것을 변경 아무것도! = 인쇄 때문에 '*'그것 위에 일어날. 코드의 목적은 두 번 인쇄하지만 각 행 옆에 두 번씩 인쇄하는 것이 아닙니다 (33 ***). 아니면 그게 무슨 뜻이 아니야? 응답에 대한 tnx – user7418776

+0

@ user7418776 여러분의 필요에 따라 대답을 업데이트했다고 생각합니다. –

+0

tnx 시간과 대답, 나는 이것을 할 다른 방법을 찾으려고 노력할 것입니다. 스캐너 입력의 정확한 위치에 줄이 필요하기 때문입니다. 대답은 – user7418776