画像は問題文。
これどこが間違っていますか?
以下コード。
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);
}
}
}
}
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で質問しましょう!
似たような質問が見つかりました
- 数学 数1 この問題の(3)で少なくとも一方が実数解をもつ。のとき①②の式をそれぞれD1,D2とした時D1 5 2023/08/01 01:46
- 数学 【 数I 二次方程式の実数解 】 問題 ※写真の(2) 解答 いずれか一方のみが実数解を持つため に 1 2022/06/25 17:36
- 物理学 平行板コンデンサに誘電率ε1を持つ誘電体1と誘電率ε2を持つ 誘電体2を隙間なく詰める。極板の面積を 1 2023/08/10 22:46
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- 物理学 真空に置かれた面積S、間隔dの平行平板コンデンサの問題について教えて下さい。 (1)コンデンサの極板 1 2023/05/29 22:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
processingで String str="AAAB...
-
論理演算子”||”またはの入力方法
-
countに実行した回数をいれたい...
-
javaでforを用いて進数を変換す...
-
エラー(互換性の無い型)
-
繰り返しによる星印の出力
-
(急いでいます)Javaで3回間違...
-
2次元配列の並び替え
-
java キーボード入力された値の...
-
ループ処理の際、最後だけ","を...
-
配列を逆順させて表示させる方...
-
キーボードから10人分の点数を...
-
Ctrl+Zが入力されると終了する...
-
総称型ArrayList<E>への参照...
-
Java、2の0乗~10乗の表示
-
javaで九九の表を作りたい
-
ヒストグラム
-
javaのエラーが回収できない
-
Java 配列<選挙>
-
javaが上手くいきません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
Java、2の0乗~10乗の表示
-
数値⇒漢数字変換 java
-
論理演算子”||”またはの入力方法
-
コマンドライン引数の例外処理...
-
JAVAのfor文で困っています。
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Java 入力した整数値の合計を、...
-
7つ数字を表示したら改行すると...
-
テキストボックスに入力された...
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
Randomメソッドの確率設定
-
Ctrl+Zが入力されると終了する...
-
学校で課題を出されて困ってい...
-
Java キーボードから負の数が入...
-
階乗の式
-
キーボードから10人分の点数を...
-
Java 配列<選挙>
おすすめ情報