为什么赢得这个变量加载?

时间:2014-08-04 12:13:46

标签: java variables

短篇小说

我已经创建了一个程序,如下所示。我想将我创建的包导入到程序中。我无法弄清楚为什么编译器无法识别我的地址变量,其类位于我创建的包下的文件中

地址,名称和日期都使用相同的语法,但编译器无法识别地址。删除地址并使用其余类执行程序后,我可以成功运行我的程序。但是,我不能用地址这样做。


更多详情

我创建了一个程序,通过命令行提示用户输入他或她想要创建的员工数量。然后,用户输入有关员工姓名,地址和雇用日期的信息,程序将显示此信息。

下面的代码不包含名称,地址和日期的类,尽管我在这些提到的类中引用了对象(然后是字段)。这些类已保存在一个文件夹下的其他文件中,因为我试图将我的代码作为包运行。

文件夹的名称是util - 因此包名称是util。每个源代码都以
开头 package util;


import util.*;

public class EmployeeA
{
    Name name;
    Date date;
    Address address;

    public EmployeeA()
    {
        name = new Name();
        date = new Date();
        address = new Address();
    }

    public static void main(String[] args)
    {
        int x = Integer.parseInt(args[0]);
        EmployeeA[] array = new EmployeeA[x];

        for(int i = 0; i < x; i++)
        {
            array[i] = new EmployeeA();
            array[i].name.name = Input.getString("Enter employee first name and last name");
            array[i].date.date = Input.getString("Enter employee hire date in MM/DD/YYYY");
            array[i].address.address = Input.getString("Enter employee address");
        }
        for(int i = 0; i < x; i++)
            System.out.println(array[i].name.name + " was hired on " + array[i].date.date + " and lives on "
                    + array[i].address.address);

    }
}



                    }

源文件#1

package util; 

public class Address
{
   String address;
}

源文件#2

package util;
public class Date
{
    String date ;
}

源文件#3

package util;

public class Name
{
    String name ;
}

employeeA.java:27:错误:找不到符号

array [i].address.address = Input.getString("Enter employee address");
                 ^

符号:变量地址  location:类型为Address的可变地址

employeeA.java:31:错误:找不到符号

System.out.println (array[i].name.name + " was hired on " + array[i].date.date + " and lives on " +  array[i].address.address);
                                                                                                                     ^

符号:变量地址  location:类型为Address的可变地址

2 个答案:

答案 0 :(得分:2)

address中的Address字段没有访问修饰符 - 因此它仅适用于同一个包中的类。您的EmployeeA类不在同一个包中(它没有package语句),因此无法看到它。您可以将其公开 - 但最好将其设为私有并添加一种方法来访问它(getAddress())。有关详细信息,请参阅Java tutorial

话虽如此,你现有的类型目前还很贫乏 - 当然,表示日期的类型比String更好......

答案 1 :(得分:0)

看起来你在EmployeeA类的末尾有一个额外的大括号。直接位于最后一行的加号下方。我怀疑这是导致它无法正确编译。