繁体   English   中英

在main中创建的对象在其他类中不执行

[英]Object created in main doesnt perform in other classess

我需要帮助。 我坚持这一点。

这是餐厅。 我想使用服务员类的对象wtr1,wtr2,wtr3。我在我的main中启动了它们。

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;


        }

这是我的主要知识。我不知道rest参数是否应该为null,但它是默认设置的。程序无法执行,它给我的错误是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];
    }



}

捷:

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

您没有传递您已经创建的Waiters,而是传递了null,那么您期望发生什么? 餐厅实例将仅包含null引用,并且将无法神奇地使用服务对象。 必须传递它们-如果您希望餐厅使用Waiter引用,请通过构造函数传递它们。

 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());

在这条线

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

您正在创建餐厅,但是您创建的服务员没有被发送到餐厅! 您已经使用了三个null服务员。 你只需要

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

您提到过null被自动放置在那里。 当IDE为您创建方法调用的大纲时,它可能会填充允许的默认值,具体取决于其配置方式。 对于对象引用,默认情况下将为您提供null ,因为实际上它不知道该如何为您放置null 不要以为自动生成的代码是正确的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM