java - 调用我创建的方法来减少变量的值不会对该值产生影响。我该如何解决这个问题?

标签 java

我的任务是创建一个模拟预付费手机使用的程序。它只能有四个属性,即 double creditsLeft、int totalMinutesCalled、double ratePerCall 和 int textMessagesSent。

该类应实现这些方法:void load(double pesos)、void call(int minutes)、double getLoadLeft()、int getTotalMinutesCalled()、void printSummary()。

当调用 printSummary 方法时,应随后打印出有关 MobilePhone 实例属性的报告。

package javaPackage;
public class Driver{
    public static void main(String args[]){
        MobilePhone mp = new MobilePhone();
        mp.load(34.50);
        mp.call(1);
        mp.printSummary();
        mp.sendTextMessages();
        System.out.println(mp.getNumTextMessages());
    }
}

预期输出:

Credits left: P27.00  
Total call duration: 1 mins.  
Rate per call: P6.50  
Number of text messages sent: 1

这是我的代码。

package javaPackage;
public class MobilePhone {
         double creditsLeft;
         int totalMinutesCalled;
         double ratePerCall;
         int textMessagesSent;

    public MobilePhone(){
        creditsLeft=0;
        totalMinutesCalled=0;
        ratePerCall=6.50;
        textMessagesSent=0;
    }   
    public void call(int minutes){
        totalMinutesCalled=minutes; 
    }
    public  void load( double pesos ){
        creditsLeft=pesos;
    }   
    public int getTotalMinutesCalled(){
        return totalMinutesCalled;
    }   
    public void changeRate(double newCallRate){
        ratePerCall=newCallRate;
    }
    public void sendTextMessages(){ 
        creditsLeft--;
    }
    public int getNumTextMessages(){    
        return textMessagesSent ;
    }   
    public void printSummary(){
        System.out.println("Credits left:"+ (creditsLeft -(totalMinutesCalled*ratePerCall)));
        System.out.println("Total call duration:" +totalMinutesCalled);
        System.out.println("Rate per call:"+ ratePerCall);
        System.out.print("Numer of text messages sent:" );
    }   
}

但是,我遇到了一些问题。调用 sendTextMessages() 不会减少 creditsLeft 的值。

此外,如何显示调用 sendTextMessages() 的次数以显示发送短信的次数?除了上面提到的变量之外,我不允许使用任何其他变量。

这是我的输出。

Credits left:28.0
Total call duration:1
Rate per call:6.5
Number of text messages sent:0

目前,发送的短信数量始终为0,因为我还不知道如何完成这个程序。自从我调用了一次 sendTextMessages() 以来,剩下的积分应该是 27。

我对编程很陌生,只知道很少的东西。任何帮助将不胜感激。提前致谢。

最佳答案

变了!你看不到它,因为你必须打电话

phone.printSummary()

发送短信后第二次。

关于第二个问题: 您已经声明了字段“textMessagesSent”。每次调用 sendTextMessages() 时通过增加它来使用它。 final方法如下所示:

public void sendTextMessages(){
   creditsLeft--;
   textMessagesSent++;
}

还应考虑在调用 call() 方法时更新“creditsLeft”字段。

关于java - 调用我创建的方法来减少变量的值不会对该值产生影响。我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34806343/

相关文章:

java - 将文件复制到HDFS时,如何控制该文件驻留在哪些节点上?

java - 总是空指针异常?

java - ABCL 的解释器可以从 InputStream 加载 Lisp 源代码吗?

java - 在Java中为单链表创建新节点

java - 在这种情况下这个 & 符号的目的是什么?

java - 只有 JLabel 没有显示

java - 从 Hibernate 和 Spring 连接到多个数据库

java - 向下抛投时不同级别的抛投性能

java - IntelliJ 导入时不应导入 *

java - 通过 JDBC 将 MATLAB 连接到 Apache Derby 数据库