-3

プロジェクトにこの OOP プログラムがあり、エラーが発生する理由がわかりません。

このプログラムは投票システムに似ていますが、キーボードからの入力を使用するだけです。Voter vote = new Voter("String here");しかしその前に、前の有権者を示してから、候補者とその順位をそれぞれと を使用して示したいと思いCandidates cand = new Candidates("String");ます。

コードを再確認しても、同じエラーが発生します。私はJavaの初心者です。誰かが同時に私に説明と回答をしてくれると助かります。そして、私が述べた以外のエラーが誰かに見られたら、それは素晴らしいことです. ありがとう!

私のコード、

候補クラス:

    public class Candidates
{
    public String candName;
    private int position;
    private int totalVotes;

    public void Candidate (String candName, int position, int totalVotes)
    {
        this.candName = candName;
        this.position = position;
        this.totalVotes = totalVotes;
    }

    public void setDetails (String candName, int position, int totalVotes)
    {
        this.candName = candName;
        this.position = position;
        this.totalVotes = totalVotes;
    }

    public String getCandName()
    {
        return candName;
    }

    public int getPosition()
    {
        return position;
    }

    public int getTotalVotes()
    {
        return totalVotes;
    }
}

有権者クラス:

    public class Voter
{
    private String name;
    private int votNum;
    private int precint;

    public Voter(String name, int votNum, int precint, double bDay)
    {
        this.name = name;
        this.votNum = votNum;
        this.precint = precint;
    }

    public void setDetails(String name, int votNum, int precint)
    {
        this.name = name;
        this.votNum = votNum;
        this.precint = precint;
    }

    public String getName()
    {
        return name;
    }

    public int getVotNum()
    {
        return votNum;
    }

    public int getPrecint()
    {
        return precint;
    }


    public Voter toString()
    {
        StringBuilder sb = new StringBuilder();
        sb.append(name).append(" ");
        sb.append(votNum).append(" ");
        sb.append(precint).append(" ");
         sb.append("Voter's Name: ").append(" ");
         sb.append("Voter's ID number: ").append(" ");
         sb.append("Precint: ").append(" ");
         return sb.toString();
    }
}

メインクラス:

    import java.util.Scanner;

public class voteDemo
{
    public static void main(String[] args)
    {
        System.out.println("Previous voter's info: ");
        Voter vot1 = new Voter("Name1", 131, 01);
        Voter vot2= new Voter("Name2", 265, 02);
        Voter vot3= new Voter("Name3", 343, 01);
    System.out.println(vot1);
    System.out.println(vot2);
    System.out.println(vot3);

    System.out.println("The Candidates: ");
        Candidates cand1  = new Candidates("Candidate1", 1, 19000);
        Candidates cand2 = new Candidates("Candidate2" , 2, 17000);
        Candidates cand3 = new Candidates("Candidate3", 3, 12000);
    System.out.println(cand1);
    System.out.println(cand2);
    System.out.println(cand3);

    Scanner kb = new Scanner(System.in);

        System.out.println("Enter Voter's Name: ");
        String name = kb.nextLine();
        System.out.println("Enter Voter's ID: ");
        int votNum = kb.nextInt();
        System.out.println("Enter Precint: ");
        int precint = kb.nextInt();

        do
        {
            System.out.println("\n\nSelect Candidate for Senator:");
            System.out.println("1 - Choice1");
            System.out.println("2 - Choice2");
            System.out.println("3 - Choice3");
            System.out.println("4 - Choice4");
        System.out.println("5 - Choice5");
        System.out.print("\nEnter choice: ");

            choice = kb.nextInt();

           switch(choice)
            {
                case 1:
                        System.out.println("Name: " + name);
                        System.out.println("Voter ID: " + votNum);
                        System.out.println("Precint No.: " + precint);
                        System.out.println("Senator of choice: Choice1");
                        break;
                case 2:
                        System.out.println("Name: " + name);
                        System.out.println("Voter ID: " + votNum);
                        System.out.println("Precint No.: " + precint);
                        System.out.println("Senator of choice: Choice2");
                        break;
                case 3:
                        System.out.println("Name: " + name);
                        System.out.println("Voter ID: " + votNum);
                        System.out.println("Precint No.: " + precint);
                        System.out.println("Senator of choice: Choice3");
                        break;
                case 4:
                        System.out.println("Name: " + name);
                        System.out.println("Voter ID: " + votNum);
                        System.out.println("Precint No.: " + precint);
                        System.out.println("Senator of choice: Choice4");
                        break;
                case 5:
                        System.out.println("Name: " + name);
                        System.out.println("Voter ID: " + votNum);
                        System.out.println("Precint No.: " + precint);
                        System.out.println("Senator of choice: Choice5");
                        break;

                default:
                        System.out.println("Error. Review your entries.");
                        break;
            }
        } while (choice != 5 );

    System.out.println("Press Enter to confirm.");

    }
    }

私が得るエラー:

必須: String,int,int,double 検出: String,int,int理由: メイン クラスの 7、8、9 行目と 15、16、17 行目
で、実引数リストと仮引数リストの長さが異なります。

voteDemo.java:47: エラー: シンボルの選択が見つかりません = kb.nextInt(); 私のメインクラスで

4

1 に答える 1

2

簡単に言えば、N 個の引数を必要とするメソッド呼び出しがあるが、間違った数の引数を指定したことを意味します。例えば

    public void setFoo(int arg) { ... }

    // using it correctly
    setFoo(24);

    // using it incorrectly
    setFoo();                     // compilation error - wrong number of args
    setFoo(42, 43);               // compilation error - wrong number of args

コンストラクターを使用して同じことを取得できますnew...あなたが行ったように。

public Voter(String name, int votNum, int precint, double bDay)

Voter vot1 = new Voter("Name1", 131, 01);

見る?

4 つの引数で宣言し、3 で使用しようとしました。


そして、これは...

voteDemo.java:47: エラー: シンボルの選択が見つかりません = kb.nextInt(); 私のメインクラスで

宣言していませんchoice。宣言していない変数に割り当てただけです。Javaではできません。すべての変数は明示的に宣言する必要があります。


私はあなたの注意を払っていますが、通常、Java 数値リテラルの先頭にゼロを置くことは悪い考えです。なんで?先頭のゼロは、10 進数ではなく 8 進数を使用していることを Java コンパイラに伝えるためです。つまり、011 実際には 11 ではなく 9 を意味します。数値を 8 進数で記述する場合を除き、先行ゼロを使用しないでください。

于 2013-03-29T05:20:06.723 に答える