2011-02-28 11 views
10

Her anahtarın durduğu yerde while döngüsünün durduğu ve F, R, C, Q gibi bir giriş istediği bir döngü yapmak istiyorum. Aşağıdaki ifadeler işe yarar, ancak ifade kırılmaz. muhtemelen onlar okumak çok kolay değil gibi onları ihtiyacı olmayan bir şekilde kod yeniden yazmak daha iyi olmasına rağmen Sen labelled breaks.java'da while anahtarında bir anahtar ifadesinin nasıl ayarlanacağı

kullanmalıdır

public static void main(String[] args) throws IOException { 

    // start both with 1 point 
    int goodTotal = 50; 
    int monTotal = 50; 

    // input switch statement 

    while (goodTotal > 0 && monTotal > 0) { 

     System.out.print("Type a letter: "); 
     System.out.println("\n"); 
     System.out.print("F: Go out and Fight "); 
     System.out.println("\n"); 
     System.out.print("R: Rest "); 
     System.out.println("\n"); 
     System.out.print("C: Check Stats "); 
     System.out.println("\n"); 
     System.out.print("Q: Quit "); 
     int input = System.in.read(); 

     System.out.println("You typed: " + (char) input); 

     switch (input) { 
     case 'f': 
      System.out.println("Continue the game"); 
      break; 
     case 'r': 
      System.out.println("Players should rest"); 
      break; 
     case 'c': 
      System.out.println("Checking the status of the game"); 
      System.out.print("Goodman has " + goodTotal + " points and Monster has " + monTotal + " points"); 
      System.out.println("\n"); 
      break; 
     case 'q': 
      System.out.println("Game over"); 
      System.exit(input); 
      break; 
     default: 
      System.out.println("Invalid selection"); 
      break; 
     } 

     // Set value of minimum and maximum damage 
     int minDmg = 2; 
     int maxDmg = 15; 

     // Get random number; 
     int damage = minDmg + Double.valueOf(Math.random() * (maxDmg - minDmg)).intValue(); 
     int damage2 = minDmg + Double.valueOf(Math.random() * (maxDmg - minDmg)).intValue(); 

     // remove value of damage from started value to get total value remaining 
     goodTotal = goodTotal - damage; 
     monTotal = monTotal - damage2; 

     // print message if still in the game 
     if (goodTotal > 0) { 
      System.out.println("Goodman has " + goodTotal + " points left. Not bad, Man! "); 
     } 

     // if Goodman survives round 2 print a message of encouragement 
     if (goodTotal > 0 && count > 1 && count <= 2) { 
      System.out.print("This is encouraging. Goodman has lasted past roundhh " + count + ". "); 

      // print new message if Goodman passes round 3 
     } else if (goodTotal > 0 && count == 3) { 
      System.out.print("Goodman is as strong as Samson. He has lasted round " + count 
        + " and still looks strong."); 
      System.out.print(" 10 hit points has been added to your total"); 
     } 

     if (monTotal > 0) { 
      System.out.println("Wait, Monster has a total of " + monTotal + " points and is still in the game"); 
     } 

     // exit if have less than 0 point, and print game over. Congratulate the winner 
     if (goodTotal < 0) { 
      System.out.println("Goodman you are out of the game"); 
      System.out.println("The monster will take over the village. This is sad"); 
      System.out.println("Game Over!"); 
     } else if (monTotal < 0) { 
      System.out.println("Goodman has been victorious"); 
      System.out.println("The monster is dead. The people live!!!!"); 
      System.out.println("Game Over!"); 
     } 
     System.out.println("This is the end of round " + count + " "); 
     System.out.println("\n"); 
     count = count + 1; 

    } 

} 
+1

Lütfen kod biçimlendirmesini kullanın. – Mudassir

+0

Her anahtarın kesilmesi, anahtarın (kod sonundan sonuna kadar) hiçbir zaman çalıştırılmayacaktır. Bu başarmak istediğin şey mi? – aldrin

cevap

19

kullanımı döngü bir etiket:

loop: while (goodTotal > 0 && monTotal > 0) { 
    // ... 
    switch (input) { 
     case 'f': 
      // ... 
      break loop; 
     case 'r': 
      // ... 
      break loop; 
     // ... 
    } 
    // ... 
} 
1

input tip int arasında, ancak durumda etiket karakter değişmezleri (yani, f,r,c,q). Neden sadece input'u char türünde yapmıyorsunuz?

char input = System.in.read(); 
+0

Laurent ve Mahesh, çok teşekkürler. Çalışıyor – earnest

+0

@earnest Rica ederim. Lütfen uygun gördüğünüz yanıtı oylayın ve/veya kabul edin. –

+0

Çocuklar, Bir takip sorumlum var. Lütfen, bu seçeneği eklemek istiyorum: goodMan ve canavarla savaşmak için bir yarasa, balta veya kılıç satın alın. Bu değişken seçeneklerini diziler halinde nasıl kurarım 0. Yaralanma hasarı = 2 maks hasar = 4 maliyet = 3 1. eksen min hasarı = 4 maks hasar = 6 maliyet = 6 2. kılıç min hasarı = 6 maksimum hasar = 8 maliyet = 10 3. iptal – earnest