こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

入力番号に応じて該当プログラムを実行させたいです

今、4つのJavaプログラムがあります

Menu.java
Uranai.java
Janken.java
Kazuate.java

です。


そして、
<Menu.Java>
package testprogramm;

public class Menu {
public static void main(String[] args) {// 検索処理を実行
System.out.println("ひまつぶし\n1. 占い");// エスケープシーケンス1回のみ
System.out.println("2. じゃんけん" + "\n3. 数当てゲーム");
System.out.println("遊びたいゲームの番号を入力してください:");
}
}

を実行すると、

--------------------
ひまつぶし
1. 占い
2. じゃんけん
3. 数当てゲーム
遊びたいゲームの番号を入力してください:
--------------------

と出てきます。が、単に文字を表示させるプログラムになっております。
このコードを書き換えまして。
例えば「遊びたいゲームの番号を入力してください:1」と、"1"を入力すると。

<Uranai.Java>
package testprogramm;
import java.lang.String;
public class Uranai {
public static void main(String[] args) {
String[] strs = { "大吉", "吉", "普通", "凶", "大凶" };
int x = (int) (Math.random() * strs.length);
System.out.println("今日のあなたの運勢は" + strs[x] + "です。");
}
}

のプログラムが呼び出されまして。

--------------------
ひまつぶし
1. 占い
2. じゃんけん
3. 数当てゲーム
遊びたいゲームの番号を入力してください:1

今日のあなたの運勢は大吉です。

遊びたいゲームの番号を入力してください:
--------------------

のように、「今日のあなたの運勢は大吉です」というUranai.javaの結果が出力されて。
さらに「遊びたいゲームの番号を入力してください:」と、再度、遊びたいゲームの入力を促すような。

そんなプログラムにMenu.Javaを書き換えたいのですが、調べてもどうしても判らず…お力添えをいただけますと幸いです。
よろしくお願い致します。

※OKWAVEより補足:「Webシステム開発」についての質問です。

投稿日時 - 2019-07-27 21:25:31

QNo.9639761

困ってます

質問者が選んだベストアンサー

同じカテゴリー([技術者向] コンピューター>プログラミング・開発>Java)の一つ前の質問が似たようなことをやっています。
https://oshiete1.nifty.com/qa9639343.html

Scanner scanner = new Scanner(System.in);として、scanner.nextLine()で入力した文字列を読み取り、その内容を見て3つのゲームのどれを実行するか決めます。Scannerクラスはjava.utilパッケージにあります。
繰り返しをするにはwhile文などを使ってください。

じゃんけんや数当てでも同じように入力とその内容の判定、繰り返しが必要になるのではありませんか?

投稿日時 - 2019-07-28 12:18:49

補足

調べまくって何とかなりました!自分のMain.javaに、

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str;
int n;
for(;;){
System.out.print("遊びたいゲームの番号を入力してください:");
str = br.readLine();
n = Integer.parseInt(str);
if(n == 1){
Uranai asobi1 = new Uranai();
asobi1.uranaitime();
continue;
}
if(n == 2){


  ・
else{
System.out.println("遊びたいゲームの番号を入力してください:");

}

みたいな感じにして。
Uranai.javaの方は、public static void asobi1() { …}
のように、各ファイル、asobi1~asobi3メソッドを作って、大きなブロックで囲み、まるごと呼び出せるようにしました。
お騒がせしました<m(__)m>

投稿日時 - 2019-07-28 16:36:33

お礼

リンクありがとうございます、拝見しました。
そうですね。同じクラス内で、if文やwhile文で処理を分岐させて、elseブロックを何個か並べて、そこに処理内容を書いていけばいいとも思ったんですが。
そうすると、Main.javaがすごい長くなってしまい、それがスマートではない気がしまして。

できたら、Main.javaは各クラスからメソッドを呼び出すだけの内容を記述しまして。
メソッドの中身の方は、Uranai.java、Janken.java、Kazuate.javaのそれぞれに書かれているという構成にしたい…と、考えております。

投稿日時 - 2019-07-28 14:36:56

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問