2012-03-15 2 views
0

이전에이 동일한 프로젝트에서 질문을했지만 아직 해결할 수없는 문제가 있습니다. 프로젝트에는 Person 클래스, Validator 클래스, Customer 클래스 및 Employee 클래스가 있습니다. Person 클래스는 Customer 클래스가 person 클래스를 확장하는 사람 (이름, 전자 메일)에 대한 데이터를 저장하고 고객 번호를 toString 메서드에 추가합니다. Employee 클래스는 또한 Person 클래스를 확장하고 사회 보장 번호를 재정의하여 toString 메서드로 확장합니다.다른 클래스의 toString()을 인쇄하십시오.

페이지 맨 아래에 고객 클래스 또는 직원 클래스에서 toString 메서드를 인쇄하려고합니다. 사용자가 선택한 정보 (직원 정보 또는 고객 정보를 입력하는 경우)에 따라 올바른 클래스를 인쇄하고 싶습니다.

할당에 구체적으로 "콘솔에 개체의 데이터를 인쇄하려면이 응용 프로그램 Person 객체를 받아들이는 print라는 정적 메서드를 사용해야합니다. "

내가 시작했다고 생각하지만 코딩 한 모든 종류의 빨간 선이 나타납니다. 주변에서 시작

줄을 아래쪽으로 내립니다.

나는 온라인에서 그것을 보면서 문제가 더 깊어지고 있다고 생각하기 시작했다. 누군가가 그것을 통해 나를 도울 수 있다면 나는 위대 할 것이다. 내 책은이 작업을 수행하는 방법을 많이 보여주지 않으며 입력 예제를 만든 다음 인쇄하는 것처럼 보이는 모든 예제가 사용자로부터 입력을 얻으려고하므로 혼란스러워집니다.

import java.util.Scanner; 
    public class PersonApp 
    { 


public static void main(String[] args) 
{ 
    //welcome user to person tester 
    System.out.println("Welcome to the Person Tester Application"); 
    System.out.println(); 

    Scanner in = new Scanner(System.in); 


    //set choice to y 
    String choice = "y"; 
    while (choice.equalsIgnoreCase("y")) 
    { 

     //prompt user to enter customer or employee 
     System.out.println("Create customer or employee (c/e): "); 
     String input = in.nextLine(); 

     if (input.equalsIgnoreCase("c")) 
     { 
      String firstName = Validator.getString(in, "Enter first name: "); 
      String lastName = Validator.getString(in, "Enter last name: "); 
      String email = Validator.getEmail(in, "Enter email address: "); 
      String custNumber = Validator.getString(in, "Customer number: "); 
      Customer customer = new Customer(firstName, lastName, email, custNumber); 


     } 

     else if(input.equalsIgnoreCase("e")) 
     { 
      String firstName = Validator.getString(in, "Enter first name: "); 
      String lastName = Validator.getString(in, "Enter last name: "); 
      String email = Validator.getEmail(in, "Enter email address: "); 
      int empSoc = Validator.getInt(in, "Social security number: "); 
      Employee employee = new Employee(firstName, lastName, email, empSoc); 
     } 

    public void toString() 
    { 
     Person p; 
     p = c; 
     System.out.println(c.toString()); 

     p = e; 
     System.out.println(e.toString()); 
    } 

    System.out.println("Continue? y/n: "); 
    choice = in.nextLine(); 
    System.out.println(); 


} 
} 
    } 
+0

toString은 void가 아닌 String을 반환합니다. '빨간색 텍스트'에 대한 툴팁은 대부분의 시간에 잘못된 점을 알려줍니다. – Thomas

+0

나는 당신이 그것을 이해하지 못하는 인터넷에서 코드를 복사함으로써 당신이 혼란에 빠져 있다고 동의한다. 이 경우 더 큰 문제는 다른 메소드 ('main')의 중간에'toString' 메소드에 대한 코드를 붙여 넣는 것입니다. 이 코드는 쓸모가 없다. 돌아가서 한 번에 한 걸음 씩 나가야합니다. – madth3

+0

@ madth3 사실 나는 그 부분을 직접 코드화하고 작동하지 않을 때 인터넷 검색을 시작했습니다. 나는 그것이 훨씬 나아진 것을 모르지만, 적어도 나는 내 자신의 LOL에 그것을 다 망쳤다고 말할 수있다. –

답변

3

다른 메소드 내에 메소드를 정의 할 수 없습니다. 대괄호를 사용하는 방법은 toString이며 main 안에 정의되어 있습니다. 이는 잘못된 것입니다.

또한 toString은 메서드를 Object에서 무시하므로이 값을 으로 반환 할 수 없습니다. 메소드의 이름을 바꾸거나 String을 반환하십시오.

+0

그래서 나는 "계속 y/n"아래의 방법을 움직이는가? 성명서? 그것은 여전히 ​​방법을 인쇄 할 것인가? –

+0

main 메소드 외부로 이동해야하며, 다른 메소드와 마찬가지로 호출해야합니다. –

+0

다른 문제가 있습니다. Person p를 선언하는 그 toString 메소드에 줄이있다. 이 모양이 좋아 보이지만 고객 C를 원합니다. 및 종업원 e; 이 두 가지를 입력하면 붉은 선이 나타나고 지역 변수를 생성하라고 알려줍니다. 내가하려고하는 것은 사용자가 고객 정보를 넣기 위해 C를 입력했는지 프로그램에 알려주고 고객이 toString을 인쇄하기를 원한다. Employee의 경우 e와 동일합니다. 내가 올바른 방향으로가는거야? –

0

귀하의 toString 메소드를 기본 메소드 밖으로 이동해야합니다. 또한 문자열을 반환해야합니다. 아마도이 메소드를 다른 이름으로 호출해야 할 것입니다. 또한 직원과 유효성 검사기가 별도의 패키지 구조에있는 경우 해당 객체를 가져와야합니다.

관련 문제