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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

4回答

988閲覧

javaでおみくじを上手く作動させていです

95Y.K.

総合スコア11

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/05/11 07:59

前提・実現したいこと

こんにちは
javaを初めて数日になる初心者です。

javaでおみくじを作っています。

「やる」「やらない」をそれぞれコンソール入力し、
「やる」→運勢を占う
「やらない」→「やめとく」と表示されるようにしたいです。

こんな感じで書いてます
「やる」を入力したら運勢を占うようになったのですが、「やめとく」を入力した際のメッセージが表示されなくて困っています。
もしよろしければどなたか教えていただけないでしょうか

また、おみくじを作るのであればもっと簡潔にできるよ!という方法もあれば教えていただけると大変うれしいです

Java

1コード

//////以下ソース
package hello;

import java.util.Scanner;

public class Omikuji {

public static void main(String[] args) { System.out.println("おみくじ!"); System.out.println("やる?やらない?"); System.out.println("やるときは「やる」を入力"); System.out.println("やらないは「やめとく」を入力"); Scanner scanner = new Scanner(System.in); boolean a =false; boolean b =false; int i =0; while(true) { if(scanner.next().equals("やる")) { System.out.println("あなたの運勢は......"); a=true; break; }else if(scanner.next().equals("やめとく")) { b=true; break; } } if(a) {int r = new java.util.Random().nextInt(5); switch(r) { case 0: System.out.println("大吉"); break; case 1: System.out.println("中吉"); break; case 2: System.out.println("末吉"); break; case 3: System.out.println("吉"); break; case 4: System.out.println("凶"); break; case 5: System.out.println("大凶"); break; } }else if(b) { System.out.println("またね”!"); } }

}

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

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

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

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

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

guest

回答4

0

簡潔にしましたw

java

1 public static void main(String[] args) { 2 String[] Ans = {"大吉", "中吉", "末吉", "吉", "凶", "大凶"}; 3 System.out.println("おみくじ!"); 4 System.out.println("やる?やらない?"); 5 System.out.println("やるときは「やる」を入力"); 6 System.out.println("やらないは「やめとく」を入力"); 7 8 Scanner scanner = new Scanner(System.in); 9 10 while (true) { 11 String sel = scanner.next(); 12 if (sel.equals("やる")) { 13 System.out.println("あなたの運勢は......"); 14 int r = new java.util.Random().nextInt(5); 15 System.out.println(Ans[r]); 16 } else if (sel.equals("やめとく")) { 17 System.out.println("またね”!"); 18 break; 19 } 20 } 21 22 }

text

1run: 2おみくじ! 3やる?やらない? 4やるときは「やる」を入力 5やらないは「やめとく」を入力 6 7やる 8あなたの運勢は...... 9末吉 10やる 11あなたの運勢は...... 12中吉 13やめとく 14またね”! 15ビルド成功(合計時間: 3分 1秒) 16

環境はLinux mint 19.1+NetBeans IDE 8.2

投稿2019/05/11 09:29

編集2019/05/11 09:43
cateye

総合スコア6851

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

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

95Y.K.

2019/05/11 15:34

回答ありがとうございます! 配列を使って、やぱりそこから出したほうが綺麗ですよね。
guest

0

若干無理矢理感はありますが.

java

1package hello; 2 3import java.util.*; 4 5public class Omikuji { 6 7 public static void main(String[] args) { 8 System.out.println("おみくじ!"); 9 System.out.println("やる?やらない?"); 10 System.out.println("やるときは「やる」を入力"); 11 System.out.println("やらないは「やめとく」を入力"); 12 13 String[] omikuji={"大吉","中吉","末吉","吉","凶","大凶"}; 14 Scanner scanner = new Scanner(System.in); 15 Random random = new Random(); 16 HashMap<String,Boolean> map = new HashMap<String,Boolean>(){{put("やる",true);put("やめとく",false);}}; 17 18 Boolean play = null; 19 do { play = map.get(scanner.next()); } while(play == null); 20 System.out.println(play?"あなたの運勢は......\n"+omikuji[random.nextInt(5)]:"またね!"); 21 } 22}

投稿2019/05/11 15:05

jimbe

総合スコア12632

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

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

95Y.K.

2019/05/11 15:36

回答ありがとうございます! はじめてみるものが多かったのでたくさん勉強していきます
guest

0

ベストアンサー

Java

if(scanner.next().equals("やる")) {
...
}else if(scanner.next().equals("やめとく")) {
...
}

条件を判定する度にトークンを読み込んでいるのが問題です。
先に一回だけ読み込んでおいて、それを判定に用いれば良いでしょう。

Java

1String input = scanner.next(); 2if(input.equals("やる")) { 3 ... 4}else if(input.equals("やめとく")) { 5 ... 6}

コードの書き方について

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

投稿2019/05/11 08:06

LouiS0616

総合スコア35660

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

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

95Y.K.

2019/05/11 08:26

回答、ご教授ありがとうございます! 日が浅いため、頂いた回答への理解度もまだ浅いのですが、これからたくさん勉強して納得できるように努めていきます!
guest

0

実際のおみくじに近い動作をさせるようにしてみました。
つまり、箱に大吉,小吉,,, などの紙を適当な枚数をいれ、それをかき混ぜ順番に引いていくいう方法です。
大吉,小吉の各出現率も直感的に制御ができます。

java

1package teratail; 2 3import java.util.ArrayList; 4import java.util.Collections; 5import java.util.List; 6import java.util.Scanner; 7 8public class Omikuji { 9 static private List<String> cards = new ArrayList<String>(); 10 11 public static void main(String[] args) { 12 opening(); 13 play(); 14 } 15 16 static void opening() { 17 System.out.println("おみくじ!"); 18 System.out.println("やるときは「やる」を入力"); 19 System.out.println("やらないは「やめとく」を入力"); 20 } 21 22 static void play() { 23 Scanner scanner = new Scanner(System.in); 24 while (true) { 25 System.out.print("やる?やらない?"); 26 if (scanner.next().equals("やる")) { 27 System.out.println(draw()); 28 } else { 29 System.out.println("またね”!"); 30 } 31 } 32 } 33 34 static String draw() { 35 if (cards.size() == 0) { 36 cards.addAll(Collections.nCopies(10, "大吉") ) ; 37 cards.addAll(Collections.nCopies(20, "中吉") ) ; 38 cards.addAll(Collections.nCopies(20, "末吉") ) ; 39 cards.addAll(Collections.nCopies(40, "吉") ) ; 40 cards.addAll(Collections.nCopies(8, "凶") ) ; 41 cards.addAll(Collections.nCopies(2, "大凶") ); 42 43 Collections.shuffle(cards); 44 } 45 return cards.remove(0); 46 } 47}

投稿2019/05/13 20:26

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問