短篇小说
我已经创建了一个程序,如下所示。我想将我创建的包导入到程序中。我无法弄清楚为什么编译器无法识别我的地址变量,其类位于我创建的包下的文件中
地址,名称和日期都使用相同的语法,但编译器无法识别地址。删除地址并使用其余类执行程序后,我可以成功运行我的程序。但是,我不能用地址这样做。
更多详情
我创建了一个程序,通过命令行提示用户输入他或她想要创建的员工数量。然后,用户输入有关员工姓名,地址和雇用日期的信息,程序将显示此信息。
下面的代码不包含名称,地址和日期的类,尽管我在这些提到的类中引用了对象(然后是字段)。这些类已保存在一个文件夹下的其他文件中,因为我试图将我的代码作为包运行。
文件夹的名称是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的可变地址
答案 0 :(得分:2)
address
中的Address
字段没有访问修饰符 - 因此它仅适用于同一个包中的类。您的EmployeeA
类不在同一个包中(它没有package
语句),因此无法看到它。您可以将其公开 - 但最好将其设为私有并添加一种方法来访问它(getAddress()
)。有关详细信息,请参阅Java tutorial。
话虽如此,你现有的类型目前还很贫乏 - 当然,表示日期的类型比String
更好......
答案 1 :(得分:0)
看起来你在EmployeeA类的末尾有一个额外的大括号。直接位于最后一行的加号下方。我怀疑这是导致它无法正确编译。