2014-11-04 29 views
0

我需要幫助。我堅持這一點。對象創建主要不在其他類別執行

這是一流的餐廳。我想使用我的對象wtr1,wtr2,wtr3是服務員class.I發起他們在我的主。

public class restaurant extends player{ 
private final waiters wtr1 , wtr2 ,wtr3; 




public restaurant(waiters wt1 ,waiters wt2 , waiters wt3) 
    { 

     super(); 
    this.wtr1=wt1; 
    this.wtr2=wt2; 
    this.wtr3=wt3; 


public float calculateSalary() 
    { 
     employee emp = new employee(); 

     float wtrsal1 = 0; 
     float wtrsal2 = 0; 
     float wtrsal3 = 0; 
     float sal=0; 

     switch (wtr1.wExp) 
     { 
     case "low": 

      wtrsal1 = emp.salarywaiter[0]; 
      break; 

     case "medium": 

      wtrsal1 = emp.salarywaiter[1]; 
      break; 

     case "high": 

      wtrsal1 = emp.salarywaiter[2]; 
      break; 


     } 



     switch (wtr2.wExp) 
     { 
     case "low": 

      wtrsal2 = emp.salarywaiter[0]; 
      break; 

     case "medium": 

      wtrsal2 = emp.salarywaiter[1]; 
      break; 

     case "high": 

      wtrsal2 = emp.salarywaiter[2]; 
      break; 

     } 



     switch (wtr3.wExp) 
     { 
     case "low": 

      wtrsal3 = emp.salarywaiter[0]; 
      break; 

     case "medium": 

      wtrsal3 = emp.salarywaiter[1]; 
      break; 

     case "high": 

      wtrsal3 = emp.salarywaiter[2]; 
      break; 

     } 


     sal = wtrsal1 + wtrsal2 + wtrsal3; 

     return sal; 


     } 

這是我main.I不知道如果在參數休息應該是空的,但它是由default.Program犯規excecute設置,它給了我錯誤wt1.wExp是錯誤的,System.out.println(rest.calculateSalary());是錯的。

waiters wt1 = new waiters (19 , 0); 
     waiters wt2 = new waiters(20 , 0); 
     waiters wt3 = new waiters (21 , 0); 
     restaurant rest= new restaurant(null, null, null); 
     System.out.println(rest.calculateSalary()); 

這裏的服務員類:

public class waiters extends employee { 


    String wname; 
    String wsurname; 
    String wExp; 


    public waiters(int i , int n) 
    { 
     wname = getname(i); 
     wsurname = getsurname(i); 
     wExp = ExpirienceLevel[n]; 
    } 



} 
+0

爲什麼你標記了這個多重繼承?我在這個問題上看不到多重繼承。另外,您應該查找Java命名約定,並更注重縮進/格式。您可以更輕鬆地閱讀代碼,更好 - 無論是爲他人還是爲您。如果您發佈一個簡短但完整的示例,而不是在這裏和那裏摘錄,這也會有所幫助。 – 2014-11-04 18:08:57

回答

2

吹水:

restaurant rest= new restaurant(null, null, null); 

你不能傳遞你已經創建而是隻有通過在空服務員,所以你期望會發生什麼?該餐廳的實例將只持有null參考,並不會奇蹟般地能夠使用服務員對象。 必須通過它們 - 如果你想餐廳使用服務員引用,通過構造函數傳遞它們。

waiters wt1 = new waiters (19 , 0); 
waiters wt2 = new waiters(20 , 0); 
waiters wt3 = new waiters (21 , 0); 
restaurant rest= new restaurant(wt1, wt2, wt3); 
System.out.println(rest.calculateSalary()); 
+0

是的,但是我應該通過什麼樣的價值,無論我說什麼都會給我錯誤? – vulovicv 2014-11-04 18:02:55

+0

@vulovicv:你傳入你剛剛創建的Waiter對象 - 參見編輯來回答。您將需要閱讀關於創建和調用方法和構造函數的教程。 – 2014-11-04 18:04:01

+0

你是一個救命的人,謝謝你我的好人:) – vulovicv 2014-11-04 18:04:10

1

在這一行

restaurant rest= new restaurant(null, null, null); 

你創建你的餐廳,但你創建的服務員不被髮送到餐廳!你已經使用了三個null服務員。您只需要

restaurant rest= new restaurant(wtr1, wtr2, wtr3); 

您提到null是自動放在那裏的。當您的IDE爲您創建方法調用的大綱時,它可能會填充允許的默認值,具體取決於它的配置方式。對於對象引用,它會默認給你null,因爲沒有別的東西知道如何爲你放置。不要以爲自動生成的代碼是正確的!

相關問題