java For文が正常に動きません。
受付中
回答 3
投稿
- 評価
- クリップ 0
- VIEW 1,176
初心者なのですが、forが処理できません。なぜでしょうか?
教えてくださいよろしくお願いします。
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+"を倒した。");
}
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+1
ひょっとして
for(e=a;e>=0;e-=d){
あと、ループ内の e-=d; はいるんスか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
for(e=a;e<=0;e-=d){
変数 e
は 変数 a
の値を代入していますね
変数 e
の値、つまり変数 a
はいくつでしょうか?
ループを続ける条件である e<=0
について考えてみましょう
変数 e
の値に対して 0以下の間
という判定は正しそうですか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
こんにちは!
私も初心者として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;
}
}
}
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/04/28 21:49
2016/04/28 21:57
for ループの書式に関してならその通りです。
2016/04/28 22:02