Конструкторы отказываются быть использованными
В настоящее время с помощью jgrasp пишется небольшая программа, использующая два разных файла в одном каталоге. В одном файле у меня есть открытый класс с несколькими открытыми конструкторами под названием Employee. В другом файле у меня есть класс, предназначенный для реализации класса Employee. Я не могу собрать эту программу - компилятор говорит мне, что таких предоставленных конструкторов не существует (см. Код ниже). Таким образом каждая сборка, которую я делаю, терпит неудачу.
Конструкторы внутри моего класса Employee имеют открытый доступ и, насколько я могу судить, названы правильно. Я парень из C#, поэтому я не знаю, вижу ли я проблему из-за своего нрава или из-за чего. Я склоняюсь на Java для класса в настоящее время в школе.
Вот мой класс Employee:
public class Employee
{
// description: class representation of an employee.
// variable declarations
String name = "", department = "", position = "";
int idNumber = 0;
// constructors
public Employee(String n, String d, String p, int id)
{
// full constructor
this.name = n;
this.department = d;
this.position = p;
if (id > -1) this.idNumber = id;
else this.idNumber = 0;
}
public Employee(String n, int id)
{
// partial constructor (name and id)
this.name = n;
if (id > -1) this.idNumber = id;
else idNumber = 0;
this.department = "";
this.position = "";
}
public Employee()
{
// default constructor
this.name = "";
this.department = "";
this.position = "";
this.idNumber = 1;
}
// accessors
public String getName() { return name; }
public String getDepartment() { return department; }
public String getPosition() { return position; }
public int getID() { return idNumber; }
// mutators
public void setName(String newName) { name = newName; }
public void setDepartment(String newDepartment) { department = newDepartment; }
public void setPosition(String newPosition) { position = newPosition; }
public void setID(int newID) { idNumber = newID; }
}
Вот мой класс реализации:
public class ChallengeImplementor
{
public static void main(String[] args)
{
// create instance-variables for constructors
String e1_name = "Susan Meyers", e2_name = "Mark Jones";
string e1_department = "Accounting";
string e1_position = "Vice President";
int e1_ID = 47899, ew_ID = 39119;
// create several employee objects to prove they work.
Employee e1 = new Employee("Susan Meyers", "Accounting", "Vice President", 47899), // created one with full constructor
e2 = new Employee("Mark Jones", 39119), // ... partial constructor
e3 = new Employee(); // ... default constructor
// set values for e2 that weren't covered in partial constructor
e2.setDepartment("IT");
e2.setPosition("Programmer");
// set values for e3
e3.setName("Joy Rogers");
e3.setDepartment("Manufacturing");
e3.setPosition("Engineer");
e3.setID(81774);
// display all three employees
System.out.println("Name\t\tID\t\tDepartment\t\tPosition");
System.out.println("----------------------------------------------------------------------");
System.out.println(e1.getName() + "\t" + e1.getID() + "\t\t" + e1.getDepartment() + "\t\t" + e1.getPosition());
System.out.println(e2.getName() + "\t" + e2.getID() + "\t\t" + e3.getDepartment() + "\t\t" + e2.getPosition());
System.out.println(e3.getName() + "\t" + e3.getID() + "\t\t" + e3.getDepartment() + "\t\t" + e3.getPosition());
}
}
5 ответов
Взгляните на это:e1_department
а также e1_position
должны быть объектами String, но в Java нет строки (запишите имя в нижнем регистре)
исправить опечатку, выполнив:
String e1_department = "Accounting";
String e1_position = "Vice President";
после этого код работает как положено:
выход:
Возможно, ваше заявление на импорт отсутствует. Добавьте его в начало вашего класса чуть ниже имени пакета.
import {full package name}.Employee;
Я взял код, запустил вашу основную функцию и получил ответ:
Name ID Department Position
----------------------------------------------------------------------
Susan Meyers 47899 Accounting Vice President
Mark Jones 39119 Manufacturing Programmer
Joy Rogers 81774 Manufacturing Engineer
Здесь выглядит хорошо. Можете ли вы проверить, правильно ли вы импортировали пакет?
Во-вторых, я вижу две ошибки во втором и третьем полях вашей основной функции: поля объявлены как строки с маленьким s, должно быть String.
Ну, я полный идиот. Каким-то образом файл Employee.java был перемещен из того же каталога. Я думаю, что jGrasp случайно сохранил его где-то еще, хотя именно там оба файла изначально были запущены.
Я исправил проблему с String - это был всего лишь тест, который я пытался выполнить, и этот код никогда не был нужен.
Я только что попытался скомпилировать вашу программу, но изначально она не работала. Причина была в том, что вы использовали примитивный строковый тип для ваших полей ChallengeImplementor:
string e1_department = "Accounting";
string e1_position = "Vice President";
Как только я изменил это на String, он скомпилировался и работал просто отлично: скриншот. Щелкните правой кнопкой мыши ChallengeImplementor.class и запустите его как приложение Java.
Надеюсь это поможет