Java 调用我创建的减少变量值的方法不会对值产生影响。我怎样才能解决这个问题?

Java 调用我创建的减少变量值的方法不会对值产生影响。我怎样才能解决这个问题?,java,Java,我的任务是创建一个模拟预付费手机使用的程序。它只能有四个属性,即double creditsLeft、int totalMinutesCalled、double ratePerCall和int textMessagesSent 该类应该实现以下方法:void load(double peso)、void call(int minutes)、double getLoadLeft()、int getTotalMinutesCalled()、void printSummary() 调用printSum

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

该类应该实现以下方法:void load(double peso)、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()时递增它来使用它。最后一种方法如下所示:

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

还考虑在调用Car()方法时更新“CurrestsLead”字段。

< P>如果我是对的,在调用更改之前调用PrtPosiple,因此它在发送之前返回值。在调用发送消息函数后尝试调用它

解决方案:

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

对于第二个答案,只需创建一个类似“MessagesSent”的变量即可,并在调用Send Message函数时将其递增。该变量必须是全局变量,而不是局部变量;换句话说,将其粘贴在类中,而不是函数中

    int messagesSent = 0;

    private void sentTextMessages(){
        creditsLeft --;
        messagesSent ++;
    }

creditsLeft在哪里申报?在电话班吗?是的。它在MobilePhone下,您也没有增加textMessagesSent,将其添加到sendTextMessage函数中;“除了上面提到的变量之外,我不允许再使用其他变量。”这可能只适用于最终结果。对于调试,您应该能够添加变量并在以后再次删除它们。我删除了top call,如果您需要它,请将其保留在那里。但要确保底线电话保持不变,否则就不起作用了:)谢谢。成功了。我完全忽略了这一点。您还可以帮我回答另一个关于计算sendTextMessages()被调用的次数的问题吗?请单击我的答案旁边的勾号,将其标记为正确。哦,天哪。我忽略了这一点。谢谢你能回答我的另一个问题吗?关于计算短信发送的次数?这个问题回答了你的问题吗?