对象传递给java中的方法

时间:2013-06-28 16:45:51

标签: java object

我正在尝试模拟手机。我创建了以下方法:

  1. load
  2. 致电
  3. sendTextMessage
  4. 的getLoad
  5. getTotalMinutesCalled
  6. changeRate
  7. printSummary
  8. passLoadTo
  9. 我的问题是,当我将对象传递给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的负载

1 个答案:

答案 0 :(得分:2)

你的主要问题是:

 if(credit > amount) {

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