2015-03-26 2 views
0

Я пытаюсь запустить программу, но я получаю эти четыре ошибки.Ошибка исправления ошибки

TestCusomer.java:25: error: toString() in Invoice cannot override toString() in Object (same thing at line 49)

и

line 59 cannot find symbol . myCustomer.setTrn(112233778)

line 60 cannot find symbol . myCustomer.setPersentage(150)

Моя программа выглядит следующим образом:

 class Invoice 
     { 


     int trn; //TAX REGISTRATION NUMBER 
     int persentage; 
     public Invoice{} 

     public int setTrn(int trn){ 
     this.trn = trn; 
     } 

     public int getTrn(){ 
     return trn; 
     } 

     public void setPersentage(int persentage){ 
      this.persentage = persentage; 
     } 

     public int getPersentage(){ 
      return persentage; 
     } 

     String toString(){ 
      System.out.println(trn+" : "+persentage); 
     } 
} 

class Customer{ 

    int trn; 
    int charging= 0; 

    public Customer(int trn){ 
     this.trn = trn; 
    } 

    public int charge(int amount){ 
     charging = charging + amount; 
    } 

    public int charge(int amount , int trn){ 
     if (this.trn == trn){ 
      charging = charging + amount; 
     } 
    } 

    String toString(){ 
     System.out.println(trn+" : "+charging); 
    } 
} 

class TestCustomer 
{ 
    public static void main(String[] args){ 
     Customer myCustomer = new Customer(112233778); 
     myCustomer.charge(100); 
     myCustomer.setTrn(112233778); 
     myCustomer.setPersentage(150); 

     System.out.println(myCustomer); 
    } 
} 
+1

'toString()' должно быть объявлено общедоступным, так как это определено в 'Object'. Другие ошибки возникают, потому что эти методы не существуют в классе 'Customer'. – Appak

ответ

0

Ваш ToString() методы должны возвращать объекты String. Вы выводите в них строку, но не возвращаете строку. Также сделайте их общедоступными.

Например, ваш метод ToString() для класса счета-фактуры должны быть:

public String toString() 
{ 
    return trn + " : " + persentage; 
} 

И для второй задачи (не может найти символы), эти методы в классе счетов, а не в классе Customer поэтому они не могут быть вызваны на объект Customer.

+0

i did: public String toString() { \t \t System.out.println (trn + ":" + persentage); \t} – Bill

+0

но я получаю это: отсутствующий оператор возврата} – Bill

+0

Ваши методы toString должны возвращать строковый объект. Вы выводите в них строковый объект, а не возвращаете его. –

2

несколько вещей,

  1. Вы должны объявить метод toString общественного
  2. Вам нужно возвращать строку в ваших toString методов
  3. Я настоятельно рекомендую вам добавить @Override нотации, когда вы переопределить метод чтобы вы фактически переопределили метод
  4. cannot find symbol... произошел потому, что эти методы не определены в Customer, у вас есть те, что указаны в Invoice
+0

есть способ назвать эти методы, даже если они находятся в другом классе? – Bill

+0

уверен, что, поскольку счет-фактура является объектом, вы можете сделать объект-счет в Клиенте (как и для клиента в основном) и называть его через него. – Epicblood

+0

О, я вижу, вы можете объяснить вещь @Override немного больше? – Bill

Смежные вопросы