2015-01-23 1 views
0

В настоящее время я работаю над очень простым скриптом, и я получаю сообщение об ошибке, которое не отображается в приведенном примере. У меня есть набор кода и клиент для его проверки. Я получаю эту ошибку, когда пытаюсь запустить код. Я получаю это для всех трех экземпляров, где я пытаюсь использовать «новый класс» в клиенте.Простые Java-версии фактические и формальные списки аргументов различаются по длине

ClassClient.java:5: error: constructor Class in class Class cannot be applied to given types; 

    Class code = new Class("1234"); 
       ^
required: String,String,String 
found: String 
reason: actual and formal argument lists differ in length 

Вот первый набор кода:

public class Class 
{ 
//attributes 
public String code; 
private String name; 
private String credit; 

//constructor 
public Class(String newCode, String newName, String newCredit) 
{ 
    setCode(newCode); 
    setName(newName); 
    setCredit(newCredit); 
} 

//get|sets 

public String getCode() 
{ 
    return code; 
} 

public void setCode(String newCode) 
{ 
    code = newCode; 
} 

public String getName() 
{ 
    return name; 
} 

public void setName(String newName) 
{ 
    name = newName; 
} 

public String getCredit() 
{ 
    return credit; 
} 

public void setCredit(String newCredit) 
{ 
    credit = newCredit; 
} 

public String toString() 
{ 
return ("The code for this class is: "+code + "\n" + "The name for this class is :"+name + "\n" + "The number of credits this course has is :"+credit); 
} 

public boolean equals(Object o) 
{ 
if(!(o instanceof Class)) 
    return false; 
else 
{ 
    Class x = (Class) o; 
    Class y = (Class) o; 
    Class z = (Class) o; 

    return(code.equals(x.code) || name.equals(y.name) || credit.equals(z.credit)); 
} 


}//endelse 
}//end class 

А вот клиент, который проверяет код:

public class ClassClient 
{ 
public static void main(String [] args) 
    { 
    Class code = new Class("1234"); 
    Class name = new Class("Java"); 
    Class credit = new Class("4"); 
    System.out.println("The code for this class is: "+code + "\n" + "The name for this class is :"+name + "\n" + "The number of credits this course has is :"+credit); 
    } 
} 
+0

Проверьте номер своего конструктора. – drgPP

+0

Я бы посоветовал, пожалуйста, прочитать ошибку времени компиляции, которую показал компилятор. Здесь четко сказано, что нужно. – shikjohari

ответ

1

Constructor в class принимают 3String аргументы не 1.

Вы можете изменить

Class code = new Class("1234"); // you are calling single argument 
Class name = new Class("Java"); // but there is no matching 
Class credit = new Class("4"); // constructor for this 

Для

Class cl = new Class("1234","Java","4"); 

Кроме того, чтобы получить значение, которые вы должны использовать добытчик.

Вы можете изменить

System.out.println("The code for this class is: "+code + "\n" 
     + "The name for this class is :"+name + "\n" 
      + "The number of credits this course has is :"+credit); 

Для

System.out.println("The code for this class is: "+cl.getCode() + "\n" 
     + "The name for this class is :"+cl.getName() + "\n" 
      + "The number of credits this course has is "+cl.getCredit()); 
+1

Кроме того, оператор 'println' должен использовать методы getter для получения кода, имени и кредита созданного объекта класса. –

+0

Я действительно ищу своего клиента, чтобы проверить все 3 входа «код» «имя» и «кредит» индивидуально. Используя этот метод, он не просто устанавливает строки «1234» «java» и «4» вместо кода, который используется для всех трех предопределенных строк? Должен ли я изменить способ компоновки моего конструктора? –

+0

@MattiasBuelens да. Я добавил эту часть, чтобы ответить. –

0

Вы правы в вашем ClassClient, если у вас есть конструктор в классе класса, как это.

//constructor 

public Class(String somethig) 
    { 
    // set somethig 
    } 

но в вас конструктор он ожидает три аргумента. но вы предоставили только один.

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