質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

3回答

1813閲覧

java For文が正常に動きません。

timagu

総合スコア12

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/04/28 11:40

初心者なのですが、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+"を倒した。");
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こんにちは!
私も初心者として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; } } }

}

投稿2016/04/28 13:00

編集2016/04/28 13:05
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

timagu

2016/04/28 13:06

ありがとうございます^^ 勉強になりました。
guest

0

for(e=a;e<=0;e-=d){

変数 e は 変数 a の値を代入していますね
変数 e の値、つまり変数 a はいくつでしょうか?

ループを続ける条件である e<=0 について考えてみましょう
変数 e の値に対して 0以下の間 という判定は正しそうですか?

投稿2016/04/28 11:59

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

timagu

2016/04/28 12:41

ありがとうございます。不等号が逆でした。 a=100です。
guest

0

ひょっとして

Java

1for(e=a;e>=0;e-=d){

あと、ループ内の e-=d; はいるんスか?

投稿2016/04/28 11:57

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

timagu

2016/04/28 12:49

決まった数ずつ増やすか減らす式しかはいらないんですか?
takasima20

2016/04/28 12:57

ごめん。どこの部分の話なのかな? for ループの書式に関してならその通りです。
timagu

2016/04/28 13:02

了解です。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問