2011-10-20 2 views
1

이것은 내 다른 질문 hereJava : Do 문의 내부 구문?

public void equipWep(String weapontoequip){ 
    if(items.isEmpty() && weapons.isEmpty()){ 
     System.out.println("You are not carrying anything."); 
    } else { 
     boolean weaponcheck_finished = false; 
     do { 
     for (String s : weapons) { 
      if (s.contains(weapontoequip)) { 
      System.out.println("You equip " + s + "."); 
      weaponcheck_finished = true; 
      } else { 
      System.out.println("You cannot equip \"" + weapontoequip + "\", or you do not have it."); 
      weaponcheck_finished = true; 
      } 
     } 
     }while(weaponcheck_finished == false); 
    } 
    } 

이 메소드가 실행되면, 시스템은 아무것도 출력하지 않습니다 관련이있다. 일련의 인쇄 테스트를 통해, 나는 그것이 do-while 루프 안에 있음을 확인했습니다. 비록 그것이 for 루프 안에 들어가는 지 잘 모르겠다.

+3

당신은 디버거를 사용하는 대신 단지 문을 인쇄 시도? –

+1

그건 엉망이며, 다양한 명명 규칙이 있습니다. 그러나 무기가 있으면 'for' 루프 안에 들어갑니다. –

답변

1

아이템에 무언가가있을 수 있지만 무기가 비어있을 수 있습니다. 이 경우 코드가 아무 것도하지 않는 것 같습니다.

+0

감사! 고쳤다. – Blackvein

+0

@ QuanChi 그게 유일한 문제였습니까? – Lionel

+0

@ QuanChi 여기에서 새로 왔기 때문에 문제를 해결하는 데 가장 도움이 된 답변을 표시하는 것을 잊지 마십시오. [답변 수락 방법은 무엇입니까?] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)를 참조하십시오. – Lionel

2

시작 대신 여기에서 :

public void equipWithWeapon(String weapon) { 
    if (items.isEmpty() && weapons.isEmpty()) { 
     System.out.println("You are not carrying anything."); 
     return; 
    } 

    String foundWeapon = findWeapon(weapon); 
    if (foundWeapon == null) { 
     System.out.println("You cannot equip \"" + weapon + "\", or you do not have it."); 
    } 

    System.out.println("You equip " + foundWeapon + "."); 
} 

private String findWeapon(String weapon) { 
    for (String s : weapons) { 
     if (s.contains(weapon)) { 
      return s; 
     } 
    } 
    return null; 
}