2014-01-31 3 views
-3

다음 출력을 만족하는 생성자와 메서드를 작성하려고하는데 시작하는 데 문제가 있습니다. Person 클래스의 메서드 작성

4.9 
20.0 
0 
false 
4.9' person with $20.00 and 0 tickets 
4.9' person with $20.00 and 3 tickets 
4.9' person with $20.00 and 1 tickets 
4.9' person with $20.00 and a pass 

는 테스트 코드입니다 :

public class Person2Tester 
{ 
    public static void main(String args[]) 
    { 
     Person  mary; 

     mary = new Person(4.9f, 20.00f); 

     System.out.println(mary.height); 
     System.out.println(mary.money); 
     System.out.println(mary.ticketCount); 
     System.out.println(mary.hasPass); 
     System.out.println(mary); // Notice the money is properly formatted 

     mary.ticketCount = 3; 
     System.out.println(mary); 

     mary.useTickets(2); // You have to write this method 
     System.out.println(mary); 

     mary.hasPass = true; 
     System.out.println(mary); 
    } 
} 

그리고 이것은 내가 지금까지 가지고있는 코드입니다 : 여기 내 완성 된 코드

public class Person 
{ 
    float height; 
    float money; 
    int ticketCount; 
    boolean hasPass; 

    public Person()//empty constructor 
    { 
    height = 0.0f; 
    money = 0.0f; 
    ticketCount = 0; 
    hasPass = false; 
    } 

    public Person(float h, float m) 
    { 
    height = h; 
    money = m; 
    ticketCount = 0; 
    hasPass = false; 

    } 
    public String toString() 
    { 

    return(this.height + " person with " + this.money + " and " + this.ticketCount + " tickets"); 
    } 

} 

입니다

. 도와 주신 모든 분들께 감사드립니다.

public String toString() 
    { 
    if(hasPass) 
    { 
    return(this.height + "' person with $" + this.money + " and has a pass"); 
    } 
    else 
    { 
     return(this.height + "' person with $" + this.money + " and " + this.ticketCount + " tickets"); 
    } 
    } 
    public void useTickets(int numTickets) 
    { 
    if(this.ticketCount >= numTickets) 
    { 
     this.ticketCount -= numTickets; 
    } 
    } 
+1

생성자에는 매개 변수가없고 테스트에서 2 개의 인수를 전달합니다. 그것도 컴파일해서는 안됩니다. –

+0

힌트 :'Person' 클래스에서 변수를 선언하지 마십시오. – MadProgrammer

+0

선생님은 항상 생성자를 넣어야한다고 제게 알려 주셨습니다. @HugoSousa –

답변

0

당신이 Person 객체를 생성하기 위해 Person 클래스에 전달해야 할 정보의 종류를 생각해보십시오. Person의 생성자가 인수를 취하지 않지만 테스트 코드에서 두 개의 인수를 전달하려고 시도하는 것이 합리적입니까?

Person 클래스에 대해 작성해야하는 다른 기능이 있지만 위에서 작성한 내용을 생각하면 시작할 수 있습니다.

+0

나는 항상 매개 변수가 0 인 생성자를 넣어야한다고 들었습니다. –

+0

어쨌든 _always_ 아니에요. ,하지만 당신은 생성자에서 결코 변수를 선언해서는 안됩니다. 명시 적으로 도트 연산자 인'mary.height = 4.9'를 사용하여 변수의 값을 명시 적으로 설정했는지 또는 생성자가 인수를 취하여 다음을 할 수 있는지 확인하십시오 :'Person mary = new Person (4.9, ... , ...)' –

0

Setters 및 Getters를 만들고 값을 전달하면 더 좋은 방법입니다.

public class Person2Tester{ 

    public static void main(String args[]) 
{ 
    Person mary = new Person(); 
    Person person2 = new Person(); 
    // add as many as you want perosn3 ,4 .. 

    mary.setHeight(1); 
    mary.setMoney(200); 
    mary.setHasPass(false); 
    mary.setTicketCount(4); 



    System.out.println(mary.getHeight()); 
    System.out.println(mary.getMoney()); 
    System.out.println(mary.ticketCount); 
    System.out.println(mary.isHasPass()); 
    System.out.println(mary); // Notice the money is properly formatted 

    //add your methods here 
} 
} 



public class Person{ 

    float height; 
    float money; 
    int ticketCount; 
    boolean hasPass; 

    public Person() 
{ 
    this.height = height; 
    this.money = money; 
    this.ticketCount = ticketCount; 
    this.hasPass = hasPass; 
} 

public float getHeight() { 
    return height; 
} 

public void setHeight(float height) { 
    this.height = height; 
} 

public float getMoney() { 
    return money; 
} 
+0

getter와 setter를 사용하는 경우 해당 멤버 변수는 일반적으로 'private'이어야하며 테스트 코드는 변경하면 안되기 때문에 전체적으로 많은 도움이되지는 않습니다. 답이 되십시오. – Dukeling

+0

@Dukeling 입력에 감사드립니다. Constructor를 통해 값을 전달하는 것이 setter 및 getters를 사용하는 것보다 유리하다고 생각하십니까? 당신은 pls 이것에 대한 약간의 빛을 비출 수 :) – zee

+0

나는 그가 단지 person 클래스의 또 다른 인스턴스를 만들 수 있다고 생각하고있다 Person person2 = new Person(); – zee

관련 문제