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

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

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

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

Q&A

解決済

2回答

1111閲覧

Javaのprintメソッド?について

NEKOTABETAI

総合スコア14

Java

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

0グッド

0クリップ

投稿2020/09/27 17:06

編集2020/09/28 04:54

前提・実現したいこと

javaでRPG風のゲームを作っているのですが、敵の表示的なものがうまくいきません。

発生している問題・エラーメッセージ

敵が4体、現れた! Xenoは6ポイントのダメージを受けた!

該当のソースコード

java

1 Random r = new Random(); 2 //敵出現 3 int e = r.nextInt(5) + 1; 4 for(int i = 0; i == e; i++) { 5 System.out.print('●'); 6 } 7 put("敵が" + e + "体、現れた!");     //put関数はSystem.out.println(”表示する文字”)みたいな関数です。 8 //HPを減らす 9 int damage = r.nextInt(8); //0から7まで 10 hp -= damage; 11 if(hp <= 0) { 12 hp = 0; 13 } 14 15 put( name + "は" + damage + "ポイントのダメージを受けた!");

求める完成形


●●●●
敵が4体、現れた!
Xenoは6ポイントのダメージを受けた!


といった風に敵の数に応じて●の数を変えたいです。

どうして●が一つも表示されないのか全く分かりません。

printlnを使うと改行されてしまうのでprintを使ったのですが、
何か問題があったのでしょうか。

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

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

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

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

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

swordone

2020/09/27 17:51

コード全体を記載してください。
m.ts10806

2020/09/27 18:49

タグの「RPG」はそういう言語であって「ロールプレイングゲーム」ではありません。 https://teratail.com/tags/RPG >RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。
m.ts10806

2020/09/27 21:42

提示のコードは何を参考にしたものでしょうか(特にfor文)
NEKOTABETAI

2020/09/28 04:54

迷惑おかけして申し訳ありません。 タグを修正致しました。
NEKOTABETAI

2020/09/28 04:55

for文に関してはほかの言語と混じった覚え方をしてしまったようです。 申し訳ありません。
m.ts10806

2020/09/28 05:04

どの言語でもサンプルで i == e のように書いているものはないのでは。
guest

回答2

0

for(int i = 0; i == e; i++)の i==eの部分は条件式です。今のコードの場合iとeが等しい時に●がプリントされます。iは初期化で0を代入していて、eはint e = r.nextInt(5) + 1で1から5までの値をランダムで入るのでi==eになる状態は存在しないので●は表示されません。
for(int i = 0; i <= e; i++)とすれば表示されます。

投稿2020/09/27 17:51

Jarvis

総合スコア10

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

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

A-pZ

2020/09/28 00:40

i < e ではないでしょうか
Jarvis

2020/09/28 02:08

i < eでした。失礼いたしました。
A-pZ

2020/09/28 03:25

d(・ω・
m.ts10806

2020/09/28 03:46

回答編集できますよ。
NEKOTABETAI

2020/09/28 04:58

皆さんありがとうございます。 お陰様で解決することができました!
guest

0

ベストアンサー

Javaのfor文の条件式は、「繰り返しを継続するための条件」です。もし、条件式が1回目の繰り返しの前のチェックで成立しなかった場合は、一度も繰り返し処理が実行されません。

for (int i = 0; i == e; i++) { …… }と書いた場合、変数iに0を代入してから、1回目の繰り返しを行なうかどうかi == eで判定します。変数eには、直前のint e = r.nextInt(5) + 1;によって、1以上5以下の整数値が代入済みです。0と1~5のいずれかを比較することになり、常に等しくないという結果が得られます。

では、どのような条件式を書けばいいかというと、i < e (iの値がeの値より小さい)です。つまり、for (int i = 0; i < e; i++) { …… }と書きます。

iの値は0から「eの値-1」まで変化させたいので、<=ではなく<を使います。これにより、例えばeの値が3だった場合には、iの値が0, 1, 2と増加しつつ繰り返し処理が行なわれ、●が3個表示されることになります。

わかりにくければ、for (int i = 1; i <= e; i++) { …… }と書くこともできます。この場合、例えばeの値が3だった場合には、iの値が1, 2, 3と増加しつつ繰り返し処理が行なわれ、やはり●が3個表示されることになります。

投稿2020/09/28 01:12

編集2020/09/28 05:00
Daregada

総合スコア11990

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

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

NEKOTABETAI

2020/09/28 04:57

詳しく説明していただきありがとうございます。 少し勘違いしていたようです。 今後気を付けます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問