2016-08-13 19 views
1

私はループとif文をテストするための単純な戦闘ゲームを構築していますが、私は複雑な論理問題に遭遇しました。Javaが最初にゼロになる数字を計算する

ループは、プレイヤーまたは敵HPがゼロになると終了しますが、私のコードでは、どのHPが最初に0になるかを検出できないことがわかりました。

ループを破るために最初にゼロになる番号を追跡する簡単な方法はありますか?

do { 

    @SuppressWarnings("resource") 
    Scanner reader = new Scanner(System.in); 
    System.out.println("1: Attack. 2: Defend"); 
    int n = reader.nextInt(); 
     if (n == 1){ 
     PHP = (PHP-EATK); 
     EHP = (EHP-PATK); 
     } else if (n == 2){ 
      PHP = (PHP-Math.max(0, EATK-PDEF)); 
     } 
     System.out.println("P "+PHP); 
     System.out.println(EHP); 
} 
    while (PHP >= 1 || EHP >= 1); 

if(PHP <= 0){ 
    System.out.println("You Lose!"); 
}else if (EHP <= 0){ 
    System.out.println("You win!"); 
} 

答えて

4

ルック:

while (PHP >= 1 || EHP >= 1) 

それは「プレイヤーがまたは彼の敵が戦うことができる一方で、上に行く」という意味します。言い換えれば、あなたはあなたが勝者であると宣言した時点で、両方が死ぬまであなたは戦い続けます。この問題を解決するだろう「プレイヤー彼の敵が戦うことができますが、」」に条件を変更する

+0

ああ、[OK]を、私はもともと&&でそれを持っていなかったが、私はそれを作るだろうと思ったので、私はそれを変更しました両方または0になるまで実行されます。 – Exostrike

1

while (PHP >= 1 && EHP >= 1);に変更while (PHP >= 1 || EHP >= 1);

あなたは使用してORあなたが望む運転し、あなたのループ継続条件で

関連する問題