2014-09-02 8 views
-5

나는 내 조건이 제대로 트리거되지 않고 그 이유를 모르는 곳에 문제가 있습니다. 여기 함수는 ModelField를 호출 :if 문이 트리거되지 않습니다.

public void squareMaker(){ 
    for (int i = 0; i<=_model.getSizeofgame()-1; i++){ 
     _squares.add(new JButton()); 
     _model.Modelfield(i, 'u'); 
     _squares.elementAt(i).setBorder(_border); 
     _squares.elementAt(i).setActionCommand("" +i); 
     _squares.elementAt(i).addActionListener(_controller); 
     this.add(_squares.get(i)); 
     System.out.println("Square in gamepanel " + i); 
    } 
} 

그리고 모델의 실제 기능 :

public void Modelfield(int pos, char symb){ 
    int position=pos+1; 
    System.out.println("Adding square in model "+position +" boardsize "+boardsize); 

    if((position%boardsize)==0){ 
     System.out.println("Right edge "+position); 
     if(position<=Boardwidth){ 
      modelVector.elementAt(position).redge=true; 
      System.out.println("Top and Right edge "); 
     } 
     else{ 
      System.out.println("Not top edge"); 
     } 
    } 
    else { 
    } 
    modelVector.addElement(new Fieldpiece(position,symb)); 
} 

그래서 발생하도록되어 제가 squareMaker에서 Modelfield를 호출 할 때 결코 if((position%boardsize)==0) 과거 얻을 수 없다는 것입니다

아무도 이유가 무엇입니까? 문 경우

+0

코드에서 공백을 사용하기 시작할 수 있습니다. – soulcheck

+0

진술이 사실 일 수 없습니까? – Keppil

+2

'println'의 실제 결과는 무엇입니까? – Dolda2000

답변

1

일반적으로 :

if((position%boardsize)==0){ 

가 발생하지 않습니다 position % boardsize가 0이 아닌 때문입니다. 왜을 찾기

기본 디버깅 101 : 코드 방식으로 행동하지 않을 경우 당신이해야한다고 생각, 코드 영향을 출력 모든 정보를 제공합니다. 잘하면 (당신은 또한/실행을 통해 코드를 단계 수있는 문제가 무엇인지 당신에게을 정확히 말해야 출력을 검사

System.out.println ("====="); 
System.out.println ("position = " + position); 
System.out.println ("boardsize = " + boardsize); 
System.out.println ("modulo = " + position % boardsize); 
System.out.println ("====="); 

: 당신의 if 문 앞에 다음 줄을 삽입 예를 들어

, 이 메서드로 생성 된 출력을 검사하지 않으려는 경우 디버거).

이미 당신이 출력을 디버그 정보를 충분히 생각 코드가있는 경우, 당신은 것을 검토 (당신이 우리의 도움을 원한다면 우리에게 출력을 보여줍니다)해야한다. 내가 전문가는 생각하지

Adding square in model 
+1

OP는 이미 위치와 보드 크기를 인쇄 중입니다. – Keppil

+0

@Keppil : 예, 방금 알아 챘습니다. 그 점을 고려하여 답을 수정했습니다. – paxdiablo

0

,하지만 내 생각 엔 그 position%boardsize 실행하는, 그것은하지 == 0을 수행하는 경우 :이 경우,로 시작하는 출력 라인으로 구성되어 있습니다. positionboardsize의 값이 기대치를 반영하는지 확인하고 문제를 해결하는지 확인합니다.

관련 문제