【问题标题】:Object created in main doesnt perform in other classess在 main 中创建的对象在其他类中不执行
【发布时间】:2014-11-04 18:00:40
【问题描述】:

我需要帮助。我坚持这个。

这是一流的餐厅。我想使用属于服务员类的对象 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 的参数是否应该为空,但它是默认设置的。程序不执行,它给我错误 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];
    }



}

【问题讨论】:

  • 为什么要标记这个多重继承?在这个问题中,我对多重继承一无所知。此外,您应该真正查找 Java 命名约定并更加注意缩进/格式。您越容易阅读代码,对他人和您都越好。如果您发布一个简短但完整的示例,而不是在这里和那里发布sn-ps,这也会有所帮助。

标签: java class object multiple-inheritance


【解决方案1】:

奇特:

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

您没有传入您创建的 Waiter,而只是传入了空值,那么您期望会发生什么?餐厅实例将只持有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());

【讨论】:

  • 是的,但是我应该传递什么值,不管我说什么都会给我错误?
  • @vulovicv:您传入刚刚创建的 Waiter 对象——请参阅编辑以回答。您将需要阅读有关创建和调用方法和构造函数的教程。
  • @vulovicv:再次阅读有关此的教程,因为这是基础材料。如果你要继续前进,你需要很好地理解这一点。
【解决方案2】:

在这一行

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

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

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

您提到nulls 是自动放在那里的。当您的 IDE 为您创建方法调用的大纲时,它可能会填充允许的默认值,具体取决于它的配置方式。对于对象引用,它默认为您提供nulls,因为它真的不知道如何为您放入其他内容。不要假设自动生成的代码是正确的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2017-04-22
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多