質問: new Random(); //int a=rnd.nextInt(100) + 1; //モンスターのHP int a=100; int b=rnd.nextInt(100) + 1; //モンスターのMP String c="MONSTER1"; //モンスター名 int d=rnd.nextInt(100) + 1; //ダメージ int e; System.out.println(c+" HP:"+ a + " " + "MP:"+ b); for(e=a;e<=0;e-=d){ System.out.println("\r\n勇者の攻撃。"+c+"に、"+d+"ダメージ。\r\n"); e-=d; System.out.println(c+" HP:"+ e +" MP:"+ b+"\r\n"); } System.out.println(c+"を倒した。"); } }
回答: こんにちは! 私も初心者としてJAVAを勉強していて同じ問題を解決したことがあって 答えてみました! まずコードを見ます package game; import java.util.Random; public class game2 { public static void main(String[] args){ System.out.println("モンスターがあらわれた。\r\n"); Random rnd = new Random(); //int a=rnd.nextInt(100) + 1; //モンスターのHP int a=100; int b=rnd.nextInt(100) + 1; //モンスターのMP String c="MONSTER1"; //モンスター名 int d=rnd.nextInt(100) + 1; //ダメージ int e; System.out.println(c+" HP:"+ a + " " + "MP:"+ b); for(e=a;e<=0;e-=d){ System.out.println("\r\n勇者の攻撃。"+c+"に、"+d+"ダメージ。\r\n"); e-=d; System.out.println(c+" HP:"+ e +" MP:"+ b+"\r\n"); } System.out.println(c+"を倒した。"); } } このようなコードですね。 まず何も出なかった理由はFOR文の条件式のことが間違っています 変数「e」の初期化式が「100」からですが。条件式は「0」より少なかったり同じ場合なので 処理できなかったと思います。それで for(e=a;e<=0;e-=d)を for(e=a;e>=0;e-=d)に直すのが良いと思います そして条件式を直したと言っても問題があります それはFOR文による変数の処理時点です 上の問題を改善してテストしたらこのように結果が出ます 勇者の攻撃。MONSTER1に、90ダメージ。 MONSTER1 HP:10 MP:41 MONSTER1を倒した。 まだHP残っているのに倒れてしまいましたね なぜなら変数「e」の数値が「0」より少なくなるように変わってから また System.out.println("\r\n勇者の攻撃。"+c+"に、"+d+"ダメージ。\r\n"); System.out.println(c+" HP:"+ e +" MP:"+ b+"\r\n"); を表示しなければなりませんが。FOR文の条件式に満足できないからです だから上のprintlnを表示しないで終わってしまいます 反復文を勉強していると思います。 for, while, do-whileの変数処理時点などが違うと思いますので他の反復文も 勉強したらどうでしょうか? 最後に私が改善てみたのコードもお付けいたします そして私は外国人なので理解できない部分があるかもしれませんね 理解できない部分があったらコメントお願いします package javafor; import java.util.Random; public class fortest { public static void main(String[] args){ System.out.println("モンスターがあらわれた。\r\n"); Random rnd = new Random(); int a=100; //モンスターのHP int b=rnd.nextInt(100) + 1; //モンスターのMP String c="MONSTER1"; //モンスター名 int d=rnd.nextInt(100) + 1; //ダメージ System.out.println(c+" HP:"+ a + " " + "MP:"+ b); int e = a; while(true){ if(e > 0){ e-=d; System.out.println("\r\n勇者の攻撃。"+c+"に、"+d+"ダメージ。\r\n"); System.out.println(c+" HP:"+ e +" MP:"+ b+"\r\n"); }else{ System.out.println(c+"を倒した。"); break; } } } }