🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

解決済

2回答

5877閲覧

javaでwhile文を使い6が出るまでサイコロを振り続けるプログラムを作成したい。

nabeko

総合スコア5

Java

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

0グッド

0クリップ

投稿2019/10/05 08:52

前提・実現したいこと

javaでjavaでwhile文を使い6が出るまでサイコロを振り続けるプログラムを作成したい。

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

作成してみたはものの、6が出ても終わらない時がある。

該当のソースコード

class Ex1 {
public static void main (String[] args) {

while( 1 + (int)(Math.random() * 6.0) < 6 ){ int diceNumber = 1 + (int)(Math.random() * 6.0); System.out.println( diceNumber ); } System.out.println( 6 ); System.out.println( "「6が出たので終了します」" ); }

}

試したこと

while文の繰り返し条件と繰り返し処理にある1 + (int)(Math.random() * 6.0を同値とするために、while文外で変数に代入してみた。しかし今度は無限ループに入ってしまった。

補足情報(FW/ツールのバージョンなど)

saiなどまだ習っていないことは使わないでwhile文で作成したいです。
windows /java se8 221

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

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

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

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

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

guest

回答2

0

java

1while( 1 + (int)(Math.random() * 6.0) < 6 ){ 2 int diceNumber = 1 + (int)(Math.random() * 6.0); 3 System.out.println( diceNumber ); 4 5}

表示する乱数と、判定する乱数が別です。
表示タイミングで6だったとしても、whileの判定時に再び乱数を発生させるので、そこで6にならない限りループを抜けません。

投稿2019/10/05 08:57

swordone

総合スコア20669

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

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

nabeko

2019/10/05 09:08

ありがとうございました。解決しました。
guest

0

ベストアンサー

Math.randomを呼ぶ度に乱数が生成されているからです。

Java

1int diceNumber = -1; // とりあえず -1 2while( diceNumber < 6 ){ 3 diceNumber = 1 + (int)(Math.random() * 6.0); 4 System.out.println( diceNumber ); 5}

do-while文を使うのも良いアイデアです。


while文の繰り返し条件と繰り返し処理にある1 + (int)(Math.random() * 6.0を同値とするために、while文外で変数に代入してみた。

方針としては正しいです。
おそらく実装に問題があったのでしょう。ループ内で値を更新し忘れていたり。

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
Java

投稿2019/10/05 08:57

編集2019/10/05 08:59
LouiS0616

総合スコア35668

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

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

nabeko

2019/10/05 09:12

ありがとうございました。int diceNumber = -1としてしまう発想はありませんでした。 コードの載せ方のアドバイスまでありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問