コード import java.util.Scanner; import java.util.Random; class FingerFlashing { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); Random rand = new Random(); String[] hands = {"グー", "チョキ", "パー"}; int retry; // もう一度行うか? do { // コンピュータの手を0, 1, 2の乱数として生成 int comp = rand.nextInt(3); // プレーヤの手を0, 1, 2で読み込む int user; do { System.out.print("じゃんけんポン"); for (int i = 0; i < 3; i++) System.out.printf("(%d)%s ", i, hands[i]); System.out.print(":"); user = stdIn.nextInt(); } while (user < 0 || user > 2); // 両者の手を表示 System.out.println("私は" + hands[comp] + "で、あなたは" + hands[user] + "です。"); // 判定 int judge = (user - comp + 3) % 3; switch (judge) { case 0: System.out.println("引分けです。"); break; case 1: System.out.println("あなたの負けです。"); break; case 2: System.out.println("あなたの勝ちです。"); break; } // もう一度行うかどうかを確認 do { System.out.print("もう一度? (0)いいえ (1)はい:"); retry = stdIn.nextInt(); } while (retry != 0 && retry != 1); } while (retry == 1); } }
コンピュータの手の数 n を最初に入力し,コンピュータの手を n となるようにし,自分の手と合わせて n+1 の手に対する勝敗を表示するプログラムを作成しなさい.という課題が出たのですがどうやったらいいかわかりません。 ここに質問の内容を詳しく書いてください。
>どうやったらいいかわかりません。
そりゃあ仕様を何も考えて無いから分かるわけ無いです。
「じゃんけんぷプログラム」とやらの「仕様」を決めて下さい。
コンピュータの手の数 nとは何ですか?入力する範囲はありますか?
自分の手はどのようにして決定されますか?
「勝敗」の判断基準は何ですか?
仕様があまりにも曖昧です。
仕様を考えましょう。
回答者は質問者と同じく環境にある…わけじゃないです。
『俺様がわかっているんだから、回答者は普通にわかるだろ。プロなんだからよ』は暴論です。
最近習い始めたのでまだjavaについて無知なのですいませんでした。ヒントには以下のじゃんけんプログラムをもとにして作れと書いてありました。
import java.util.Scanner;
import java.util.Random;
class FingerFlashing {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
Random rand = new Random();
String[] hands = {"グー", "チョキ", "パー"};
int retry; // もう一度行うか?
do {
// コンピュータの手を0, 1, 2の乱数として生成
int comp = rand.nextInt(3);
// プレーヤの手を0, 1, 2で読み込む
int user;
do {
System.out.print("じゃんけんポン");
for (int i = 0; i < 3; i++)
System.out.printf("(%d)%s ", i, hands[i]);
System.out.print(":");
user = stdIn.nextInt();
} while (user < 0 || user > 2);
// 両者の手を表示
System.out.println("私は" + hands[comp] + "で、あなたは" +
hands[user] + "です。");
// 判定
int judge = (user - comp + 3) % 3;
switch (judge) {
case 0: System.out.println("引分けです。"); break;
case 1: System.out.println("あなたの負けです。"); break;
case 2: System.out.println("あなたの勝ちです。"); break;
}
// もう一度行うかどうかを確認
do {
System.out.print("もう一度? (0)いいえ (1)はい:");
retry = stdIn.nextInt();
} while (retry != 0 && retry != 1);
} while (retry == 1);
}
}
別に責めているわけではありません。
初心者なら尚更、いきなりjavaのプログラムを作らないで、まず与えられた課題を
日本語で日本語で定義してみては?と言っています。
あなたが書いた質問の中の課題は曖昧な情報が多数含まれてますよね?
例えば、「コンピュータの手の数 n」というのは恐らくじゃんけんのグー、チョキ、パーを
数字に置き換えて考える必要があると理解したとします。
そうすると、あなたがもとにして作れと渡されたプログラムから
グーは0、チョキは1、パーは2と定義すれば良いのではないかと考えられませんか?
このようにして、まずはプログラムを書く前段階として仕様を作りましょう。
その仕様が無いとプログラムは作れませんよ。
そもそも、追記としてのコード等はここに書かずに、本質問に書きましょう。
編集できますから。
編集時に、コードは"<code>"または"<コード>"のボタンを押して出てくるやつの中に書きましょう。
編集時に、コードは"<code>"または"<コード>"のボタンを押して出てくるやつの中に書きましょう。
そんな事よりもまず「先生に聞け」って話だと思うけども。
https://teratail.com/help/avoid-asking
「コードをください・デバッグしてください等の丸投げの質問
何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。」
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10106560055
とこの質問の関連は何なのでしょうか。