2017-03-12 10 views
-3

私はJavaを学ぶための小さなプロジェクトに取り組んでいます。私は現在、戦闘経験のようなRPGを達成するループの作成に取り組んでいます。ループは最初から正しく動作しますが、2回目以降は正しく動作しません。 関連するコードは次のとおりですループは私に予測結果を与えていません

int dummyhp = 10; 

int Cweap = in.nextInt(); 
if (Cweap == 1){ 
    System.out.println("You pick up the dagger and Lunge at the dummy"); 

    while(dummyhp >0){ 
     int Ddamage = (c1.speed-6)*5; 

     if (Ddamage <= 4){ 
      System.out.println ("You fall over a chair, luckily you graze the dummy on your way down"); 
      dummyhp--; 
      System.out.println(dummyhp + "hp left"); 
     } 
     else if (Ddamage == 5){ 
      System.out.println("you get in a good hit"); 
      dummyhp = dummyhp - 3; 
      System.out.println(dummyhp + "hp left"); 
     } 
     else if (Ddamage > 6) 
      System.out.println(" you cut the dummys head clean off"); 

     dummyhp = dummyhp-10; 
     System.out.println(dummyhp + "hp left"); 
    } 
} 

ここには関連する出力があります。あなたは良いヒットで 7HPを得るダミー で短剣とランジを拾う

は、私がなぜダメージ変数= 5初めて通って、あることに変化がわからないんだ

を残し-3hp を残しました2回目は6回以上。

ありがとうございます!

+1

完全にクリーンな出力を投稿してください。また、Ddamageはコードからは見えないc1.speedに基づいています。 – kouljaboy

+0

'ダメージ=(c1.speed-6)* 5'ダメージ値は' c1.speed'に依存する - どこから来たのか、値はどこで変更されたのかなど計算されます... –

+2

新しいことを知っている人からの質問には投票しないでください。真剣に、いくつかの基本的な人間フレンドリーなスキルを学ぼう。とにかく、どの速度がc1.speedの速度であるのか分からないので、ur Ddamageがどのように計算されているかを知ることは難しいです。 – SomeStudent

答えて

0

ダメージを変更するのは、ループが開始されるときだけです。したがって、(c1.speed-6)* 5> 6を解くと、c1.speed> 7.2ということが分かります。したがって、ダメージが2回目に設定されると、7.2より大きい値に設定されます。あなたが達成しようとしていることを言うのが難しい理由は、c1.speedが何であるかを知ることができないからです。

1

あなたは

dummyhp = dummyhp-10; 
System.out.println(dummyhp + "hp left"); 
を実行するための

System.out.println(" you cut the dummys head clean off"); 

全体whileループ本体を実行するだけに、他の-かの構造のための他に、もし最後の文の理由で中括弧を入れていません

whileループが1回だけ実行される結果になります。 これらの3つのステートメントをelse-ifステートメントで実行する場合は、最後のelse-ifステートメントでこれを実行して、println()メソッドだけでなく、これらのステートメントをすべて実行する必要があります。

else if(Ddamage > 6) 
{ 
System.out.println(" you cut the dummys head clean off"); 
dummyhp = dummyhp-10; 
System.out.println(dummyhp + "hp left"); 
} 
関連する問題