如何输出: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
答案 0 :(得分:2)
您需要更改main()方法中mp.load()中给出的值。 而不是34.50,请给112.50。然后你会得到你想要的输出
答案 1 :(得分:1)
只是一些提示 - 将call函数中的分钟数添加到totalMinCall中 - 关于学分:如果你的装载量不超过34.50,这是不可能的...所以最初的数量很可能是更高的
答案 2 :(得分:0)
显然totalMinCall
保持为0,因为您的代码永远不会更改它。您需要添加一些代码才能更新totalMinCall
。
在我看来,积分剩余计算是正确的。您需要使用main
方法获得更多信用额度!