2015-01-06 3 views
-1

Im이 코드를 실행하면 커다란 문제가 발생합니다. 사용자로부터 임의의 문자를 받아들이지 않으면 모든 if 문을 건너 뛰고 numOfCardsChosen을 자동으로 5로 변경합니다.Simple "If"문이 keyTyped()에서 작동하지 않습니다.

public void keyTyped (KeyEvent e) 
{ 

    if (numOfCardsChosen == 0) 
    { 
     cardChosen1 = e.getKeyChar(); 

     numOfCardsChosen++; 
     cardChosen2 = e.getKeyChar(); 
     System.out.println (numOfCardsChosen); 
    } 

    if (numOfCardsChosen == 1) 
    { 

     cardChosen2 = e.getKeyChar(); 

     numOfCardsChosen = 2; 
     System.out.println (numOfCardsChosen); 

    } 
    if (numOfCardsChosen == 2) 
    { 
     cardChosen3 = e.getKeyChar(); 
     numOfCardsChosen = 3; 
     System.out.println (numOfCardsChosen); 

    } 
    if (numOfCardsChosen == 3) 
    { 
     cardChosen4 = e.getKeyChar(); 
     numOfCardsChosen = 4; 
     System.out.println (numOfCardsChosen); 
    } 

    if (numOfCardsChosen == 4) 
    { 
     cardChosen5 = e.getKeyChar(); 
     numOfCardsChosen = 5; 
     System.out.println (numOfCardsChosen); 
     repaint(); 
    } 
} 
+3

이 메서드는 호출되는 것입니까? print 문을 삭제하여 확인하십시오. –

+6

이것을 디버깅해야합니다. 몇 가지 중단 점 또는 더 많은 값을 기록하십시오. – Thilo

+0

'numOfCardsChoice' 란 무엇입니까? – BzH

답변

0

당신이 다음 대신 if-if-if-if의, if-else if-else if-else-else을 사용하면 조건 중 하나만 선택하십시오.

@JRowan 님이 질문에 대한 답변에 질문에 답변했습니다. 코드를 디버깅하려고 첫째, 이런 종류의 시나리오에 대한 (중 브레이크 포인트를 사용하거나 로거를 사용하여) :

int i = 0; 

if (i == 0) { 
    System.out.println(i); 
    i++; 
} 
if (i == 1) { 
    System.out.println(i); 
    i++; 
} 
if (i == 2) { 
    System.out.println(i); 
    i++; 
} 

대신

int i = 0; 

if (i == 0) { 
    System.out.println(i); 
    i++; 
} else if (i == 1) { 
    System.out.println(i); 
    i++; 
} else if (i == 2) { 
    System.out.println(i); 
    i++; 
} 

주를 사용합니다. 디버깅 자체에서 문제의 원인을 얻을 수 있습니다.

+0

같은 일이 일어났습니다. –

+0

이제 코드가 작동합니까? –

+0

아니, 네, 고맙습니다. –

0

우선 numOfCardsChosen이란 무엇입니까? 이 변수에 대한 선언이 없습니다. 또한 코드에서이 메서드를 어떻게 호출합니까? KeyEvent를 캡쳐하려면이 메소드를 while 루프에서 호출해야한다.

0

몇 가지 문제가 있습니다. 먼저 일련의 "if"문은 각각 numOfCardsChosen을 증가시켜 다음 if 문에 대한 조건을 true로 만듭니다 (첫 번째 조건이 참이라고 가정). 예를 들어 numOfCardsChosen 처음에 0 상상 :

if (numOfCardsChosen == 0) 
{ 
    // snipped 
    numOfCardsChosen++; // <-- numOfCardsChosen is now 1 
    // snipped 
} 

if (numOfCardsChosen == 1) // <-- condition is now true 
{ 
    numOfCardsChosen = 2; // <-- numOfCardsChosen is now 2 
} 
if (numOfCardsChosen == 2) // <-- so this is true 
// etc 

은 '다른 경우'두 번째 이후에 '만약'문을 사용하여 해결할 수 있습니다.

둘째, 당신은 동일한 이벤트에서 두 번 키 문자에 대해 물어

if (numOfCardsChosen == 0) 
{ 
    cardChosen1 = e.getKeyChar(); // <-- here you get the key character 

    numOfCardsChosen++; 
    cardChosen2 = e.getKeyChar(); // <-- here you get it again 

을 코드에서 위의 cardChosen1cardChosen2은 항상 동일합니다.