2013-08-27 3 views
3

Я только начал, и это действительно сбивает с толку, потому что, когда я пишу свой код, в затмении нет красного предупреждения, однако при запуске программы он не работает. Вопрос:Сотрудник, имя, фамилия и ID

Напишите программу, в которой отображаются идентификаторы сотрудников и имена и фамилии сотрудников. Используйте два класса. Первый класс содержит данные сотрудника и отдельные методы для установки идентификаторов и имен. Другой класс создает объекты для сотрудников и использует объекты для вызова методов set. Создайте несколько сотрудников и покажите свои данные.

Мои коды:

public class Employee { 
    String lastName = null; 
    String firstName = null; 
    double ID; 

    public Employee(String lastName, String firstName, double ID){ 
     this.lastName = lastName; 
     this.firstName = firstName; 
     this.ID = ID; 
    } 

    public String empStat(){ 
     return "Last Name: " + lastName + "First Name: " + firstName + "ID" + ID; 
    } 

} 

и

public class MainEmployee { 
    public static void main(String args[]){ 

    Employee nub1 = new Employee ("Griffin", "Peter", 000001); 
    System.out.println(nub1); 
    Employee nub2 = new Employee ("Griffin", "Lois", 000002); 
    System.out.println(nub2); 
    Employee nub3 = new Employee ("Griffin", "Stewie", 000003); 
    System.out.println(nub3); 
    Employee nub4 = new Employee ("Griffin", "Brian", 000004); 
    System.out.println(nub4); 


} 
} 

и все это делает дисплей

[email protected] 
[email protected] 
[email protected] 
[email protected]

может кто-нибудь сказать мне, почему?

+0

Обращаем ваше внимание: [JavaScript не является JAVA] (http://kb.mozillazine.org/JavaScript_is_not_Java) – mplungjan

+0

Не получите привычки нулевых номеров заполнения. '000010' - это не тот номер, который вы считаете. См. Также http://stackoverflow.com/questions/5206342/what-is-an-illegal-octal-digit/5206381#5206381 –

ответ

9

Изменить

public String empStat() 

в

@Override 
public String toString() 

Посмотрите, как toString() работает (и почему вы видите Employee @ 523ce3f) в docs

При использовании System.out.println(nub1); метод nub1.toString() называется неявно.

0

Необходимо переопределить метод toString(). Это вызывается в любое время, когда объект должен возвращать строку объекта. По умолчанию вы получаете «Employee @ 523ce3f», который является уникальным внутренним представлением (в строковой форме) объекта.

Простое создание метода, возвращающего String, не будет делать этого.

Чтобы отменить изменение метода ToString():

public String empStat()

в

 
@Override 
public String toString() 
0

Вы пытаетесь печатать объекты, он будет выводить хэш объектов. Вызов объектов объектов вызывает метод toString() в классе Object, вы должны переопределить метод toString для получения состояния объектов.

public String toString() 
{ 
return firstName+" "+lastName+" "+ ID; 
} 

Переопределение toString это самый простой подход, рассмотрим список <Employee> типа. Распечатка списка теперь вернет текущие значения полей объектов.

List<Employee> list= new ArrayList<Employee>(); 
Employee o= new Employee("Will","Smith",1); 
Employee o1= new Employee("Jason","Bourne",2); 
list.add(o); 
list.add(o1); 
for (Employee x:list) 
System.out.print(x); 

Выход:

[Will Smith 1, Jason Bourne 2] 
0

Вам нужен метод toString

public String toString() { 
    return lastName + " " + firstName + " " + Double.toString(ID); 
} 

Выражаясь вместе:

class Employee { 
    String lastName = null; 
    String firstName = null; 
    double ID; 

    public Employee(String lastName, String firstName, double ID){ 
     this.lastName = lastName; 
     this.firstName = firstName; 
     this.ID = ID; 
    } 

    public String empStat(){ 
     return "Last Name: " + lastName + "First Name: " + firstName + "ID" + ID; 
    } 

    public String toString() { 
     return lastName + " " + firstName + " " + Double.toString(ID); 
    } 

} 
public class MainEmployee { 
    public static void main(String args[]){ 

     Employee nub1 = new Employee ("Griffin", "Peter", 000001); 
     System.out.println(nub1); 
     Employee nub2 = new Employee ("Griffin", "Lois", 000002); 
     System.out.println(nub2); 
     Employee nub3 = new Employee ("Griffin", "ST", 000003); 
     System.out.println(nub3); 
     Employee nub4 = new Employee ("Griffin", "Brian", 000004); 
     System.out.println(nub4); 
    } 
} 

Результат будет ниже:

Griffin Peter 1.0 
Griffin Lois 2.0 
Griffin ST 3.0 
Griffin Brian 4.0 
Смежные вопросы