2013-03-29 2 views
-2

У меня есть эта программа 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."); 

    } 
    } 

ошибка, что я получаю:

required: String,int,int,double found: String,int,int
reason: actual and formal argument lists differ in length
on lines 7, 8, 9 and 15, 16, 17 on my main class.

voteDemo.java:47: error: cannot find symbol choice = kb.nextInt(); on my main class

+2

В чем проблема? Что говорит об ошибке? –

+1

Это много кода. Рассмотрим [сокращение этого до короткого примера] (http://meta.stackexchange.com/questions/22754/sscce-how-to-provide-examples-for-programming-questions), который показывает ту же проблему. – Joe

ответ

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: error: cannot find symbol choice = kb.nextInt(); on my main class

Вы не объявили choice. Вы просто назначены переменной, которую вы не объявили. Невозможно сделать это на Java. Каждая переменная должна быть явно объявлена.


Хотя у меня есть ваше внимание, это, как правило плохая идея поставить ведущие нули на Java числового литерала. Зачем? Поскольку ведущие нули говорят компилятору Java, что вы используете восьмеричную, а не десятичную. Таким образом, 011фактически означает девять, а не одиннадцать! Не используйте начальные нули, если вы не указали , чтобы написать свои цифры в восьмеричном.

+0

Извините, я, возможно, наблюдал за этим. Но спасибо, теперь у меня меньше ошибок. – Ella

Смежные вопросы