繁体   English   中英

java条件字符串toString

[英]java string toString with condition

我必须编写一个PhonePlan对象,该对象将代表客户为其电话设计的计划类型。 因此,对象必须跟踪minutesAllowed(int),已用分钟(int),dataAllowed(int),已用数据(int)和planType(布尔值):

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的数量,第三个元素是planplan为true还是false。

我尝试了许多不同的事情,但是我无法构造一个toString()方法来考虑我的planType是true还是false。

我的尝试:

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

您可以按照以下代码中的描述实现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");
}

您可以使用简写方式if / else将建议(尝试)的toString方法中的return轻松更新为以下内容:

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

Metod toString()绝不能用来展示对象属性的值。 对于覆盖,您可以使用Commons库

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM