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

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

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

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

Q&A

3回答

15055閲覧

おみくじのプログラムについて

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

2クリップ

投稿2017/05/31 02:22

while文を使って、好みのメッセージが出るまで(「吉」が出るまで)おみくじを引き続けるプログラムを作りたいのですが、何度も実行しても1回の実行につきメッセージは1つしか出てきません。※「吉」のみ無限ループでした
for文を使った書き方もあるようですが、while文でやりたいです。

import java.util.Random; public class FortuneL{ public static void main(String[] args){ Random rand=new Random(); System.out.println("あなたの運勢を占います"); int fortune=rand.nextInt(6)+1; while(fortune==1){ System.out.println("大吉"); break; } while(fortune==2){ System.out.println("中吉"); break; } while(fortune==3){ System.out.println("末吉"); break; } while(fortune==4){ System.out.println("吉"); } while(fortune==5){ System.out.println("凶"); break; } while(fortune==6){ System.out.println("大凶"); break; } } }

実行結果
あなたの運勢を占います
末吉

あなたの運勢を占います
大凶

あなたの運勢を占います

あなたの運勢を占います







(以下略)

1回の実行で「吉」が出るまで出力するにはどうしたらいいのでしょうか。
どなたかよろしくお願いします。

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

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

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

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

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

guest

回答3

0

while文をif文代わりにする書き方、初めて見ました(驚愕)
それは置いといて、原因はおみくじを引く処理(乱数を求めるところ)を含めてループ処理されていないからですね。
また「吉」で無限ループするのは、whileループ内でbreakしていないからです。
修正版のコードを書いておきますが、課題か何かなら見ないようにお願いします。

Java

1import java.util.Random; 2public class FortuneL{ 3 public static void main(String[] args){ 4 Random rand=new Random(); 5 System.out.println("あなたの運勢を占います"); 6 while(true){ 7 int fortune=rand.nextInt(6)+1; 8 if(fortune==1){ 9 System.out.println("大吉"); 10 } 11 else if(fortune==2){ 12 System.out.println("中吉"); 13 } 14 else if(fortune==3){ 15 System.out.println("末吉"); 16 } 17 else if(fortune==4){ 18 System.out.println("吉"); 19 break; 20 } 21 else if(fortune==5){ 22 System.out.println("凶"); 23 } 24 else if(fortune==6){ 25 System.out.println("大凶"); 26 } 27 } 28 } 29} 30

投稿2017/05/31 02:38

ttyp03

総合スコア16998

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

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

0

こんにちは、

結果を表示するところをメソッドにしました。
"吉"が出るのはfortune = 4;の時なのでそれになるまで、do~while文でループさせました。

以下、私が書いたソースコードを載せておきます。

Java

1import java.util.Random; 2 3public class Sum{ 4 public static void main(String[] args) { 5 6 Random rand=new Random(); 7 System.out.println("あなたの運勢を占います"); 8 int fortune; 9 do{ 10 fortune=rand.nextInt(6)+1; 11 result(fortune); 12 }while(fortune != 4); 13 14 } 15 public static void result(int fortune){ 16 switch(fortune){ 17 case 1: 18 System.out.println("大吉"); 19 break; 20 case 2: 21 System.out.println("中吉"); 22 break; 23 case 3: 24 System.out.println("末吉"); 25 break; 26 case 4: 27 System.out.println("吉"); 28 break; 29 case 5: 30 System.out.println("凶"); 31 break; 32 case 6: 33 System.out.println("大凶"); 34 break; 35 default: 36 break; 37 } 38 } 39} 40

投稿2018/04/23 23:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

whileは「条件が満たされている間は何度でも繰り返す目的で利用される」繰り返し処理です。
fortuneには4が出たときにご提示の「吉ループ」に入るのですが、fortuneの値が4のままで、またbreakも書いていないため無限ループとなってしまいます。

1回のループでランダムな数値を受け取りつつ内容を出力しつつ、特定の値がでたときにbreakをかけて抜けるように
ループを1つにまとめた方がいいですね。
while文の基礎
の「無限ループ」の項のさいころの目で6が出るまで振り続けるプログラムが参考になると思います。

投稿2017/05/31 02:27

編集2017/05/31 02:32
m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問