ฉันกำลังสร้างเกมที่ฉันใช้คลาสที่จะอนุญาตให้ผู้ใช้ป้อนข้อมูลตัวเลือกเป็นสตริงเพื่อทำหนึ่งใน 3 ตัวเลือก: "โจมตี" "ป้องกัน" หรือ "หนี" สิ่งนี้สามารถจัดการได้ในเชิงตรรกะโดย 'เอกสิทธิ์หรือ' (XOR) ฉันตัดสินใจลองใช้ while loop โดยใช้ตรรกะนี้แทนโครงสร้าง Switch ปกติเพื่อดูว่าจะเกิดอะไรขึ้น โดยติดอาวุธคณิตศาสตร์แยกส่วนเพียงเล็กน้อย ฉันรู้ว่าในขณะที่สภาพนั้นดูน่าเกลียดและยาวนาน แต่มันก็ใช้งานได้จริง และฉันก็ชอบมัน! ฉันอยากรู้ เนื่องจากฉันต้องการใช้ while loop นี้ซ้ำในส่วนอื่นๆ ของโค้ด หากมีวิธีการบันทึกเงื่อนไข while loop (เช่น ตัวแปร วิธีการ หรือบางอย่าง) เพื่อที่ฉันจะได้ใส่ไว้ใน while เงื่อนไขการวนซ้ำและไม่ใช้โค้ดสูงสุด 8 บรรทัดในแต่ละครั้ง นี่คือ while loop ของฉัน อย่าหัวเราะ มันได้ผล และจะหลีกเลี่ยงการลองจับ มันวิ่งได้สะอาดมากจริงๆ ฉันโพสต์วิธีที่ฉันใช้ด้านล่าง วิธีการนี้ถูกเรียกโดยคลาสอื่น:
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("");
}
}
}
ฉันกำลังถามอีกครั้งว่ามีวิธีใช้ while clause นี้หรือไม่ (ซึ่งฉันเน้นย้ำว่าทำงานได้อย่างสมบูรณ์แบบ):
(( !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) ))
เพื่อให้พอดีกับเงื่อนไขของ while loop:
while(FITS HERE){}
ขอบคุณ!