2017-01-28 14 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が偽の真である場合に第三の一つが明記されている第二の一つである第一要素。

は、私は多くの異なるものを試してみましたが、私は...私のplanTypeが真か偽のどちらかである場合を考慮して、toString()メソッドを構築することはできませんよ

私の試み:

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

boolean 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を更新することができtoString方法は、次のように、速記場合/他を使用することにより:

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(); 
} 
関連する問題