2017-01-28 4 views
0

Мне нужно написать объект PhonePlan, который будет представлять тип плана, который клиент имеет для своего телефона. Таким образом, объект должен следить за minutesAllowed (INT), протокол используется (INT), dataAllowed (INT), используются данные (INT) и planType (булево):java string 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 относится и к ложным.

Я пробовал много разных вещей, но я не в состоянии построить метод ToString(), которые принимают во внимание, если мой planType является истинным или ложным ...

Моя попытка:

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

Что означает булевский тип плана? Можете ли вы поделиться результатами, ожидаемыми для этой программы? – 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)' just 'if (planType)' будет просто отлично. –

+1

Кроме того, я не сторонник. Твой ответ мне подходит. –

+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(); 
}