![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
画像は問題文。
これどこが間違っていますか?
以下コード。
import java.util.Scanner;
public class KJava32 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[][] count = new int[4][4];
char[] c = { 'ア', 'イ', 'ウ', 'エ' };
int d1, d2;
for (d1 = 0; d1 < 4; d1++) {
for (d2 = 0; d2 < 4; d2++) {
count[d1][d2] = 0;
}
}
System.out.println("問1の解答:");
d1 = scanner.nextInt();
for (int i = 2; i <= 80; i++) {
System.out.printf("問%dの解答:", i);
d2 = scanner.nextInt();
count[d1][d2]++;
d2 = d1;
d1 = d2;
}
for (d1 = 0; d1 < 4; d1++) {
for (d2 = 0; d2 < 4; d2++) {
System.out.printf("%c->%c:%5.1f%%%n", c[d1], c[d2], count[d1][d2] * 100.0 / 79);
}
}
}
}
![「Java 4択問題の連続する2問の正解パ」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/1/543053443_6127602827fac/M.png)
No.3ベストアンサー
- 回答日時:
うん、#2氏の言う通りだなぁ。
基本的には
d2 = d1;
ってのが要らない。
多分、C言語なんかだとまずは列挙体を定義するケースなんだろうけど、生憎Javaは列挙体が使いづらい。
貴方のコードの殆どは間違ってないんだけど、選択肢をア、イ、ウ、エ、として定義する必要がない。と言うか入力が数値な以上、無駄なコードになっている。
数値入力なのか、文字を入力してそれと対応させるのか、とかその辺ハッキリせなアカン。後者はちとややこしい。
// ここから
import java.util.Scanner;
public class KJava32 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[][] count = new int[4][4];
for (int d1 = 0; d1 < count.length; d1++) {
for (int d2 = 0; d2 < count[d1].length; d2++) {
count[d1][d2] = 0;
}
}
System.out.println("問1の解答: ");
c d1 = c.valueOf(scanner.next()), d2;
for (int i = 2; i <= 80; i++) {
System.out.printf("問%dの解答: ", i);
d2 = c.valueOf(scanner.next());
count[d1.ordinal()][d2.ordinal()]++;
d1 = d2;
}
for (c x: c.values()) {
for (c y: c.values()) {
System.out.printf("P(%s|%s): %5.1f\n", y, x, count[x.ordinal()][y.ordinal()] * 100.0 / 79);
}
}
}
protected enum c {
// Java の列挙体はメンド臭い
ア(0), イ(1), ウ(2), エ(3);
// フィールドの定義
private int id;
// コンストラクタの定義
private c(int id) {
this.id = id;
}
}
}
// ここまで
これは列挙体を使って、入力がア〜エの文字列の場合なんだけど、貴方の書いたコードと殆ど変わらんのが分かるだろう。
だから間違いはあったけど、及第点ではある、と言う事。
良かったね。
ただ、この計算が統計的にどういう意味があるかは知らん。
「ある先生が人為的に4択問題を作る際の傾向」
とかは分かるかもしれんけどね。
No.2
- 回答日時:
d1 が前問の正解、d2 が入力した正解とするなら、
d2 = d1 はバグ
d1 = d2 の入力値を前問の正解にする代入のみでよい
%n という printf 書式はない
あるのは改行文字のエスケープ表現 \n
できれば
79 とか 80 などの数値を直接書かず、変数化すること
No.1
- 回答日時:
> これどこが間違っていますか?
問題が間違ってるんじゃないの?
そもそも4行4列で何をやりたいんだかサッパリ分からん。
連鎖なんぞこんなので表現出来るのかいな。
・・・数学的にも怪しい問題な気がするんだけど・・・・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
コマンドライン引数の例外処理...
-
JAVAのfor文で困っています。
-
配列から最大値・最小値
-
テキストボックスに入力された...
-
javaプログラムについて
-
Java、2の0乗~10乗の表示
-
countに実行した回数をいれたい...
-
数値⇒漢数字変換 java
-
2つのスクロールバーを連動させ...
-
Javaのはじめての質問です。 こ...
-
Java 4択問題の連続する2問の正...
-
java 素数判定
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
(急いでいます)Javaで3回間違...
-
【C#】ハッシュテーブル(連想...
-
オブジェクトの中のプロパティ...
-
IF関数でEmpty値を設定する方法。
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
論理演算子”||”またはの入力方法
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
Ctrl+Zが入力されると終了する...
-
数値⇒漢数字変換 java
-
JAVAのfor文で困っています。
-
2つのスクロールバーを連動させ...
-
countに実行した回数をいれたい...
-
7つ数字を表示したら改行すると...
-
Randomメソッドの確率設定
-
総称型ArrayList<E>への参照...
-
コマンドライン引数の例外処理...
-
Java 入力した整数値の合計を、...
-
繰り返しによる星印の出力
-
Java、2の0乗~10乗の表示
-
Java キーボードから負の数が入...
-
エラー(互換性の無い型)
-
階乗の式
おすすめ情報