"공격", "방어"또는 "도망"옵션 중 하나를 수행하는 문자열로 선택 항목을 입력 할 수있는 클래스를 활용하는 게임을하고 있습니다. 논리적으로 '배타적 OR'(XOR)로 처리 할 수 있습니다. 나는 약간의 이산 수학으로 무장 한 상황을보기 위해 일반적인 Switch 구조 대신에이 논리를 사용하여 while 루프를 사용하기로 결정했다. 나는 while 상태가 추악하고 오래있을 것이라는 것을 알았지 만, 그것은 dammit 작품입니다!, 그리고 나는 그것을 좋아합니다! 나는 while 루프 조건 (변수, 메소드 또는 무언가와 같은)을 저장할 수있는 방법이 있다면 코드의 다른 섹션에서 while 루프를 재사용하고 싶기 때문에 알고 싶었다. while 루프 조건 및 매번 8 줄의 코드를 사용하지 않습니다. 여기 while 루프가 있습니다. 웃지 마라. 그리고 try-catch를 피할 수 있습니다. 실제로는 매우 깨끗하게 실행됩니다. 아래에서 사용하는 방법을 게시했습니다. 이 방법은 다른 클래스에 의해 호출됩니다 거기에 (내가 강조하고 완벽하게 작동) 동안이 절을하는 방법입니다 경우while 루프에 대한 복합 조건을 간결하게 사용할 수 있습니까?
public static void fighterAction(){
String selection = null;
Scanner userChoice = new Scanner(System.in);
//Fighter 1 chooses combat action to perform: this is performed by
//(XOR) logic:
//((a || b) && !(a && b) || c) && !(((a || b) && !(a && b) && c))
while(((!"attack".equals(selection) || !"defend".equals(selection))
&& !(!"attack".equals(selection) && !"defend".equals(selection)
) || !"flee".equals(selection)) &&
!(((!"attack".equals(selection) || !"defend".equals(selection)
) && !(!"attack".equals(selection) &&
!"defend".equals(selection)) && !"flee".equals(selection))))
{
System.out.println("Choose action: attack defend flee\n\nEnter: ");
selection = userChoice.next();
if(((!"attack".equals(selection) || !"defend".equals(selection))
&& !(!"attack".equals(selection) &&
!"defend".equals(selection)) || !"flee".equals(selection))
&& !(((!"attack".equals(selection) ||
!"defend".equals(selection)) &&
!(!"attack".equals(selection) &&
!"defend".equals(selection)) &&
!"flee".equals(selection))))
{
System.out.println("Invalid Entry!");
}else{
System.out.println(selection + " was chosen");
System.out.println("");
}
}
}
다시 말하지만, 내가 부탁하고!
(("공격". & &! (! "attack". equals (선택) & & "방어하다". 등가 (선택)) || "도망 가다". 등가 (선택) 선택)) & &! (("공격". 동등 (선택) || "방어". 등가 (선택)) & &! (! "공격".) & & "방어".equals (선택)) & & "도망".equals (선택)))는 while 루프 조건의 내부에 맞도록
:!
while(FITS HERE){}
감사합니다!
플러스, 당신은 실제로 그 방법을 다시 사용하여'if' 문을 향상시킬 수 있습니다 ...! – user268396
@ user268396 : 답장 편집을 참조하십시오. –