2017-01-28 1 views
0

고객이 휴대 전화에 대해 가지고있는 계획의 유형을 나타내는 PhonePlan 객체를 작성해야합니다. 객체가 minutesAllowed (INT), 분 사용 (int)를 추적해야합니다 그래서, dataAllowed (INT), 데이터 사용 (INT)와 planType (부울) :조건이있는 java 문자열 toString

public class PhonePlan { 
    int minutesAllowed; 
    int minutesUsed; 
    int dataAllowed; 
    int dataUsed; 
    boolean planType; 
} 

나는이 생성자를 작성하는 데 필요한 minutesAllowed, dataAllowed, 내가했던 인수로 planType :

public PhonePlan (int ma, int da, boolean pt){ 
    this.minutesAllowed = ma; 
    this.planType = pt; 
    this.dataAllowed = da; 
} 

을 그리고 마지막으로 내가 계획의 유형에 따라 계획을 표시하는 문자열 메소드를 작성해야합니다.

또한 다음 코드를 테스트해야합니다.

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

     System.out.println(new PhonePlan(200, 2500000, false)); 
     System.out.println(new PhonePlan(250, 500000, true)); 
     System.out.println(new PhonePlan(300, 5000000, false)); 
     System.out.println(new PhonePlan(60, 1000000, false)); 
     System.out.println(new PhonePlan(30, 0, true)); 
    } 

minutesAllowed 상기 dataAllowed의 양 planType 거짓 참이면 세번째 진술되어 상기 제 2 하나를 상기 제 1 요소.

나는 많은 다른 것들을 시도하지만 난 ... 내 planType이 참 또는 거짓 인 경우 계정에 걸릴 toString() 메소드를 구성 할 수 없습니다입니다

내 시도 :

public String toString(){ 
    return ("Regular(" + minutesAllowed + " minute," + dataAllowed 
       + "GB data) Monthly Plan with " 
       + getMinutesRemaining() + " minutes remaining and " 
       + getDataRemaining() + "KB remaining"); 
} 
+2

부울 planType은 무엇을 의미합니까? 이 프로그램에서 기대하는 결과물을 공유 할 수 있습니까? – Mureinik

+0

인쇄 하시겠습니까? 명확하지 않음 ... –

+0

'toString' 메소드를 구현하려는 시도를 공유하고 왜 만족하지 않는지 설명해 주시겠습니까? – toniedzwiedz

답변

0

다음 코드에 설명 된대로 toString 메소드를 구현할 수

public class PhonePlan { 
int minutesAllowed; 
int minutesUsed; 
int dataAllowed; 
int dataUsed; 
boolean planType; 
public PhonePlan (int ma, int da, boolean pt){ 
    this.minutesAllowed = ma; 
    this.planType = pt; 
    this.dataAllowed = da; 
} 



@Override 
public String toString() { 
    return planType ? getPlanTypeBasedString("Weekly Plan") : getPlanTypeBasedString("Monthly Plan"); 
} 
public String getPlanTypeBasedString(String planType){ 
    return ("Regular(" + minutesAllowed + " minute," + dataAllowed 
      + "GB data) "+planType+" with " 
      + getMinutesRemaining() + " minutes remaining and " 
      + getDataRemaining() + "KB remaining"); 
} 
+2

테스트가 필요 없다'if (planType == true)''if (planType)'만 괜찮을 것이다. –

+1

또한, 나는 downvoter 아니에요. 당신의 대답은 나에게 좋다. –

+0

나는 거기에 너무 많은 이중성을 냄새가 난다 : o ... 그 이중성을 중간 변수로 끌어들이는 것이 좋을 것이다. –

0

쉽게 당신의 제안 (시도)에 return를 업데이트 할 수 있습니다방법 (3210) 다음에, 속기/IF 다른을 사용하여 :

return ("Regular(" + minutesAllowed + " minute," + dataAllowed 
      + "GB data) " + ((PlanType)? "Monthly": "Annual") + " Plan with " 
      + getMinutesRemaining() + " minutes remaining and " 
      + getDataRemaining() + "KB remaining"); 
0

Metod toString() 오브젝트 속성의 값을 보여주기 위해 사용되어서는 안된다. 재정의를 위해 공용 라이브러리를 사용할 수 있습니다

public String toString() { 
return new ToStringBuilder(this). 
    append("minutesAllowed", minutesAllowed). 
    append("minutesUsed", minutesUsed). 
    append("dataAllowed", dataAllowed). 
    append("dataUsed", dataUsed). 
    append("planType", planType). 
    toString(); 
}