プロが教えるわが家の防犯対策術!

Javaで配列<選挙>のプログラムを作成する方法を教えてください

1 問題文
本日、選挙が始まりました。
選挙に立候補した人はN人で立候補者には0からN-1の番号が振られています。
投票数はM個であり、立候補者の番号を紙に書いて投票します。
i番目の投票で投票された番号はPiです。
全ての投票が終わった後、最も投票数が多かった立候補者の番号を出力してください。
また、最も投票数が多かった立候補者が一人に定まるような入力値が与えられることが保証されます。

2 入力値
N M
P_1 P_2...P_M
1行目:立候補者の人数 N、投票数 M(区切り)
2行目~M行:投票された番号 Pi が与えられます。

3 出力値
全ての投票が終わった後、最も投票数が多かった立候補者の番号を出力

4 サンプルケース
・入力値
5 4
1
2
3
3
・期待される出力値
3
・説明
立候補者は5人、投票数は4
1,2番の立候補者に1枚、3番の立候補者に2枚の投票が集まりました。
最も投票数が多かった立候補者の番号は3番。

---------------------------------------------------------------------

自分のプログラムは以下の通り作成しました。

package array;

import java.util.Scanner;

public class Ar2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 立候補者の数
int M = sc.nextInt(); // 投票数
int[] votes = new int[N]; // 各立候補者の得票数を格納する配列

for (int i = 0; i < M; i++) {
int p = sc.nextInt();
votes[candidate]++; // 各立候補者の得票数をカウント
}
sc.close();

int maxVotes = 0; // 最も得票数が多い立候補者の得票数
int maxCandidate = 0; // 最も得票数が多い立候補者の番号

// 最も得票数が多い立候補者を特定する処理
for (int i = 0; i < N; i++) {
if (votes[i] > maxVotes) {
maxVotes = votes[i];
maxCandidate = i;
}
}

System.out.println(maxCandidate);
}
}

エクリプスを使用して実行し、N=5 M=4 Pに1、2、3、3を入力したところ、「3」と出力しなければならないところ、何も出力されませんでした。
正しい出力結果になるプログラムの作成方法を教えてください。

質問者からの補足コメント

  • candidateではなくpです。

      補足日時:2023/07/31 15:30

A 回答 (4件)

ん?


ひょっとしてこういう事がしたいのか?

実装例:
https://www.ideone.com/0D95cq
「Java 配列<選挙>」の回答画像3
    • good
    • 0

う〜ん、こっちの方がシンプルで良いか?



実装例:
https://www.ideone.com/LDIuK0
    • good
    • 0

仕様がヘンだ。


この問題は解けない。

> 4 サンプルケース
> ・入力値
> 5 4
> 1
> 2
> 3
> 3
> ・期待される出力値
> 3
> ・説明
> 立候補者は5人、投票数は4
> 1,2番の立候補者に1枚、3番の立候補者に2枚の投票が集まりました。
> 最も投票数が多かった立候補者の番号は3番。

サンプルケースと説明が「合ってない」。
立候補者が5人、投票数は4、っつってるのに立候補者数が4人になってないか?
1, 2番の立候補者に1枚、と言うのと入力値も合ってない。3番の立候補者に2枚、と言う説明にも合ってない。
また、

> 選挙に立候補した人はN人で立候補者には0からN-1の番号が振られています。

と書いてるのに1、2番の立候補者、から説明がスタートしてる。
0番はどこへ消えたんだ?

とまぁ、仕様がメチャクチャだ。

宿題だったとしたら先生に突っ返した方がいいだろう。
仕様がメチャクチャな宿題を出すな、と。
    • good
    • 0

candidateが定義されていないように見えます。


何かエラーでてませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!