2016-11-14 3 views
-5

Я новичок в Java и, скорее всего, сделал глупую ошибку в своем коде. В частности, у меня возникают проблемы с основными аргументами, прося и сохраняя объекты сканера для ссылки на другие подклассы. Я считаю, что части Person, Student, Employee, Faculty и Staff верны, но я не могу понять часть драйвера. Ниже приведена домашняя проблема. Заранее благодарю за помощь или совет!Программа наследования и полиморфизма Java

ПРОБЛЕМА ПРОБЛЕМЫ: Создайте класс под названием Person и его два подкласса, учащийся и служащий. Создайте подклассы факультета и персонала Employee.

Объект Person имеет имя, адрес, номер телефона и адрес электронной почты (все строки).

Студент имеет статус класса (первокурсник, второкурсник, младший или старший). Определите статус как окончательную переменную String.

Сотрудник имеет номер офиса, зарплату (оба типа) и дату найма. Используйте класс MyDate, определенный ниже, чтобы создать объект для даты наемный:

class MyDate{ 
private String date; //date in the form mm/dd/yy 

public MyDate(String date){ 
this.date = date; 
} 

public String getDate(){ 
return date; 
} 
} 

Объект Факультет имеет рабочее время и ранг (обе строки), в то время как объект Staff имеет заголовок (в виде строки).

Для классов учеников, преподавателей и сотрудников создайте методы toString, которые хранят информацию об объекте (в формате, показанном в примерах ниже).

Проверьте свои классы в классе драйвера (в том же файле), который запрашивает у пользователя, какой тип объекта они должны были бы создать, а также какую информацию они хотели бы иметь. Затем программа использует метод toString объекта для печати информации об этом объекте. Образца Run # 1

Введите 1) Для того, чтобы создать студент 2) Для того, чтобы создать сотрудник: 1
Введите имя: Walter D. Graham
Введите адрес: 4737 Стадион Drive Whitinsville, MA 01588
Enter номер телефона: 508-266-2108
Введите адрес электронной почты: [email protected]
Введите статус студента: Младший
Слушатель: Walter D. Graham статус: Младший Адрес: 4737 Стадион Drive Whitinsville, MA 0158 8 Номер телефона: 508-266-2108 Адрес электронной почты: walterdgraham @ university. Edu Образец Run # 2

Введите 1) Для того, чтобы создать студента 2) Для того, чтобы создать сотрудника: 2
Введите имя: Kimberly Д. Дэвис
Введите адрес: 795 University Hill Road Decatur, IL 62522
Введите номер телефона: 217-519-6747
Введите адрес электронной почты: kimdavis @ school.Edu
Введите 1) Для того, чтобы создать факультет член 2) Для того, чтобы создать сотрудник: 1
Введите номер офиса: 724
Введите зарплату: 84101
Введите даты наняты (мм/дд/гг): 06/12/92
Введите рабочие часы: 5-7pm, пн-чт
Введите Оценка: адъюнкт-профессор
Факультет: Kimberly Д. Дэвис ранг: адъюнкт-профессор Зарплата: $ 84101 Дата Наемные: 06/12/92

Время работы: 5-7 вечера, пн-чт Офис: 724 Адрес: 795 University Hill Road Decatur, IL 62522 Номер телефона: 217-519-6747 Электронная почта: kimdavis @ school. Edu

ВОДИТЕЛЯ PORTION ЧТО Я НАПИСАЛ:

package person; 
import java.util.Scanner; 
public class Driver { 
//Testing 

public static void main(String[] args) { 

int studentOrEmployee; 
int facultyOrStaff; 

Scanner input = new Scanner(System.in); 

System.out.println("Enter"); 
System.out.println("1)To create a student:"); 
System.out.print("2)To create and employee: "); 
studentOrEmployee= input.nextInt(); 

System.out.print("\n Enter name: "); 
Person name = input.next(); 
System.out.print("\n Enter address: "); 
Person address = input.nextString(); 
System.out.print("\n Enter phone number: "); 
Person phone = input.nextString(); 
System.out.print("\n Enter email "); 
Person email = input.nextString(); 

if (studentOrEmployee==1) { 
System.out.print("\n Enter student’s status: "); 
Person classStanding = input.nextString(); 
System.out.println(student.toString() + "\n"); 
} 

else if (studentOrEmployee==2) { 

facultyOrStaff= input.nextInt(); 
if (facultyOrStaff==1) { 
System.out.print("\nEnter office number: "); 
Person office = input.nextInt(); 
System.out.print("\nEnter salary"); 
Person salary = input.nextInt(); 
System.out.print("\nEnter date hired: "); 
Person dateHired = input.next(); 
System.out.print("\nEnter office hours: "); 
Person hours = input.nextString(); 
System.out.print("\nEnter rank: "); 
Person rank = input.nextString(); 
System.out.println(faculty.toString() + "\n"); 
} 
else if (facultyOrStaff==2) { 
System.out.print("\nEnter office number: "); 
System.out.print("\nEnter office title: "); 
Person title = input.nextString(); 
System.out.println(staff.toString() + "\n"); 
} 
} 
Person person = new Person(name,address, phone, email); 
Person student = new Student(name, classStanding, address, phone, email); 
Person employee = new Employee(name, address, phone, email, office, salary, dateHired); 
Person faculty = new Faculty(name, rank, salary, dateHired, hours, address, phone, email, office); 
Person staff = new Staff(name, title, address, phone, email, office, salary, dateHired); 
} 
} 
+2

Можете ли вы построить [** m ** cve] (https://stackoverflow.com/help/mcve) для нас, пожалуйста? – WorldSEnder

+1

Я не знаю, как ответить на этот вопрос в его нынешнем виде. Какая фактическая проблема у вас есть? –

+0

Программа не принимает входы сканера: Исключение в потоке «main» java.lang.RuntimeException: Неисполнимый исходный код - несовместимые типы: java.lang.String не может быть преобразовано в человека. \t у человека.Driver.main ( – 3viline

ответ

0

проверить декларацию. Если вы хотите сохранить строку, вам нужно объявить переменную как строку.

System.out.print("\n Enter name: "); 
String name = input.next(); 
System.out.print("\n Enter address: "); 
String address = input.nextString(); 
System.out.print("\n Enter phone number: "); 
String phone = input.nextString(); 
System.out.print("\n Enter email "); 
String email = input.nextString(); 
....