Почему эта переменная не загружается?

1

Краткая история

Я создал программу ниже. Я хочу импортировать пакет, который я создал в программу. Я не могу понять, почему компилятор не распознает мою адресную переменную, класс которой находится в файле под созданным мной пакетом

адрес, имя и дата имеют общий синтаксис, но компилятор не распознает адрес. После удаления адреса и выполнения программы с оставшимися классами я могу успешно запустить свою программу. Однако я не могу сделать это с адресом.


Дальнейшие подробности

Я создал программу, которая побуждает пользователя вводить число сотрудников, которых он или она хочет создать, через командную строку. Затем пользователь вводит информацию о имени сотрудника, добавлении и дате найма, и программа отображает эту информацию.

Код ниже НЕ СОДЕРЖИТ классы для имени, адреса и даты, хотя я упоминал объекты (а затем поля) в этих упомянутых классах. Эти классы были сохранены в других файлах в одной папке, потому что я пытаюсь запустить свой код в виде пакета.

Имя папки используется - следовательно, имя пакета используется. Каждый исходный код начинается с
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");
                 ^

символ: переменная адрес местоположение: переменный адрес типа Адрес

employeeA.java:31: ошибка: не удается найти символ

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

символ: переменная адрес местоположение: переменный адрес типа Адрес

  • 0
    И ошибка, которую вы видите, это что? Какую команду вы используете для компиляции кода?
  • 0
    Этот код очень трудно читать с несовместимыми отступами.
Показать ещё 7 комментариев
Теги:
variables

2 ответа

2
Лучший ответ

Ваш address поле в Address не имеет модификаторов доступа - поэтому он доступен только для классов в одном пакете. Класс EmployeeA не находится в одном пакете (он не имеет оператора package), поэтому он не может его увидеть. Вы можете сделать это общедоступным - но было бы лучше сделать его приватным и добавить метод доступа к нему (getAddress()). Дополнительную информацию см. В руководстве по Java.

Сказав это, ваши существующие типы в настоящее время довольно анемичны - и, конечно, есть лучшие типы для представления даты, чем String...

  • 1
    Неявная видимость Package . Хорошо поймал.
  • 1
    ОП сказал, что каждый класс был в пакете util . Внимательно глядя на свой код, employeeA нет. Хорошо поймал.
Показать ещё 7 комментариев
0

похоже, что в конце класса EmployeeA у вас есть еще одна закрытая фигурная скобка. Непосредственно под знаком плюса на последней строке. Я подозреваю, что это заставляет его не компилироваться должным образом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню