2014-11-04 57 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,因为没有别的东西知道如何为你放置。不要以为自动生成的代码是正确的!