模拟预付费移动设备使用的程序。输出错误

时间:2014-01-11 13:33:01

标签: java

如何输出:CreditsLeft:34.50                总通话时间:12分钟。                每次通话费率:6.50                发送的短信数量:0

    import java.text.DecimalFormat;
public class MobilePhone 
{
DecimalFormat df= new DecimalFormat("###,###.00");
private double creditsLeft;
private int totalMinCall;
private double ratePerCall;
private int totalOfTextSent;

public MobilePhone()
{
    creditsLeft=0.00;
    totalMinCall=0;
    ratePerCall=6.50;
    totalOfTextSent=0;
}
public void load(double pesos)
{
    creditsLeft= creditsLeft + pesos;
}
public void call(int minutes)
{
    double credits= creditsLeft;
    double rate= ratePerCall;

    if(credits<rate)
    {
        System.out.println("You Have Insufficient Ballance");
    }
    else
    {
        rate= rate*minutes;
        creditsLeft= creditsLeft - rate;
    }
}
public double getLoadLeft()
{
    return creditsLeft;
}
public int getTotalMinutesCalled()
{
    return totalMinCall;
}
public void printSummary()
{
    System.out.println("Credits left: P"+df.format(creditsLeft));
    System.out.println("Total call duration: "+totalMinCall+" mins");
    System.out.println("Rate per call: P"+df.format(ratePerCall));
    System.out.print("Number of text messages sent: ");
}
public void changeRate(double newCallRate)
{
    newCallRate=ratePerCall;
}
public void sendTextMessage()
{
    totalOfTextSent++;
    creditsLeft= creditsLeft - 1;
}
public int getNumOfTextMessages()
{
    return totalOfTextSent;
}
}

这是主要的

    public class Driver {

public static void main(String[] args) {
    MobilePhone mp = new MobilePhone();
    mp.load(34.50);
    mp.call(12);
    mp.printSummary();
    System.out.println(mp.getNumOfTextMessages());
}
}

我得到的输出就是这个:

剩下的积分:P-43.50 总通话时间:0分钟。 每次通话费率:P6.50 发送的短信数量:0

它应该是这样的:

剩下的积分:P34.50 总通话时间:12分钟。 每次通话费率:P6.50 发送的短信数量:0

3 个答案:

答案 0 :(得分:2)

您需要更改main()方法中mp.load()中给出的值。 而不是34.50,请给112.50。然后你会得到你想要的输出

答案 1 :(得分:1)

只是一些提示   - 将call函数中的分钟数添加到totalMinCall中   - 关于学分:如果你的装载量不超过34.50,这是不可能的...所以最初的数量很可能是更高的

答案 2 :(得分:0)

显然totalMinCall保持为0,因为您的代码永远不会更改它。您需要添加一些代码才能更新totalMinCall

在我看来,积分剩余计算是正确的。您需要使用main方法获得更多信用额度!

相关问题