2013-06-28 4 views
3

Я пытаюсь имитировать мобильный телефон. Я создал следующие методы:Объект передан методу в 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 мобильный объект (Мр и mp1) и вызвать метод mp.passLoadTo (mp1,1), резюме резюме MP1 печатает нагрузку я добавляемые к тр mp1

+10

Каков результат, который вы получаете, и какой результат вы ожидаете? – selig

+0

Кроме того, в 'call' я ожидаю' totalMinutes = minutes; 'должен быть' totalMinutes + = minutes; ' – selig

+0

@JesseJ passLoadTo, это перед блоками кода –

ответ

2

Ваша основная проблема заключается в следующем:

if(credit > amount) { 

Вы проверяете, превышает ли кредит сумму, но вы загружаете 30 и тратите 30, что приведет к сбою (30 > 30).

+0

Почему downvote? –

+2

Первая часть вашего ответа неверна, вторая часть - правильный ответ. (I upvoted btw) – aglassman

+0

Я пересмотрел вопрос, чтобы уточнить, что я имел в виду под первой частью (теперь вторая часть). Меня повесили на «симуляцию мобильного телефона». Посылка денег в другую камеру для меня странная концепция. (И я удалил другую часть, потому что, полагаю, это имеет смысл, если вы можете это сделать.) –