繁体   English   中英

对象传递给java中的方法

[英]Object passed to the method in java

我试着模拟一部手机。 我创建了以下方法:

  1. 加载
  2. 呼叫
  3. sendTextMessage
  4. 的getLoad
  5. getTotalMinutesCalled
  6. changeRate
  7. printSummary
  8. passLoadTo

我的问题是,当我将一个对象传递给passLoadTo()方法,然后打印该对象的摘要时,它不会更改该对象的状态。

这是我正在尝试做的事情:

public class MobilePhone {

    private double credit;
    private int totalMinutes;
    private double ratePerCall;
    private int numOfText;

    MobilePhone()
    {
        credit = 0;
        totalMinutes = 0;
        ratePerCall = 6.50;
        numOfText = 0;
    }

    public void load(double pesos) {
        if(pesos > 25) {
            credit = credit + pesos;
        } else {
            //System.out.println("The attempting to use this service is forbidden.");
            //System.out.println();
        }
    }

    //other code

    public void printSummary() {
        System.out.printf("Credit left: P%.2f" ,getLoadLeft());
        System.out.println();
        System.out.println("Total call duration "+getTotalMinutesCalled()+" mins");
        System.out.printf("Rate per call: P%.2f" ,ratePerCall);
        System.out.println();
        System.out.println("Number of text message send: " +getNumTextMessage());
        System.out.println();
    }

    public void passLoadTo(MobilePhone dest, double amount) {
        if(credit > amount) {
            credit = credit - amount;
            dest.load(amount);  
        }  else {
            System.out.println("fail");
            System.out.println("The attempting to use this service is forbidden.");
            System.out.println();
        }

    }
}

此代码用于测试目的:

public class Main {
    public static void main(String[] args) {

        MobilePhone mp = new MobilePhone();
        MobilePhone mp1 = new MobilePhone();

        mp.load(30);
        mp.printSummary();
        mp.changeRate(1);
        mp.printSummary();


        mp.call(1);
        mp.printSummary();

        System.out.println(mp.getTotalMinutesCalled());

        mp.passLoadTo(mp1, 30);
        mp.printSummary();

        mp1.printSummary();
    }
}

我想要的是每当我创建一个2移动对象(mp和mp1)并调用mp.passLoadTo(mp1,1)方法时,mp1摘要的摘要打印我从mp添加到mp1的负载

你的主要问题是:

 if(credit > amount) {

您正在检查信用额度是否大于金额,但您只需加载30并支出30,这将失败(30 > 30)

暂无
暂无

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

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