затмение - выход - PullRequest
       24

затмение - выход

0 голосов
/ 04 октября 2011

У меня есть Java-программа, использующая генетические алгоритмы, в которой я генерирую случайную двоичную строку. Отсюда я вычисляю пригодность указанной строки и печатаю ее на выходную консоль.

Я сейчас пытаюсь отобразить строку, но у меня проблемы с этим. Мое намерение состоит в том, чтобы отобразить строку, затем изменить ее, изменив один ген, а затем пересчитать пригодность. Однако всякий раз, когда я пытаюсь напечатать строку, я получаю это в окне вывода:

Individual@23fc4bec //FYI: Class name is 'Individual'

Это мой код - в методе main - пока:

Individual newIndi = new Individual();

System.out.println(newIndi.fitness);

System.out.print(newIndi);

Проблема возникает в последней строке - я также попытался сделать следующее:

System.out.print(newIndi.toString());

но это все равно дает похожий результат.

Ответы [ 5 ]

2 голосов
/ 04 октября 2011

Вам необходимо переопределить метод toString в вас Individual -Класс.

public class Individual {
    // ...

    @Override
    public String toString() {
      // output
    }
}

Примечание: eclipse может сгенерировать вам некоторый базовый метод toString () для вашего класса (Source> Generate toString ()).

1 голос
/ 04 октября 2011

Если вы просто пытаетесь напечатать закрытую переменную в другом классе, переопределение метода toString в вашем классе Individual позволит вам вернуть эту переменную (как уже говорили другие). Просто создайте метод toString:

public String toString()
{
    return whateverYourVarNameIs;
}

Попытка просто напечатать имя объекта, по умолчанию вызовет метод toString, который вернет местоположение объекта в памяти, если вы его не переопределите.

Другой идеей может быть просто создание нового метода.

public String getGenes()
{
    return whateverYourVarNameIs;
}

и сделать

System.out.println(whateverYourVarNameIs);
0 голосов
/ 04 октября 2011

ваш индивидуальный класс должен переопределить метод toString, если вы хотите сделать это таким образом, иначе он напечатает ссылку на Java (как вы видите). System.out.println (newIndi) вызывает метод toString.

0 голосов
/ 04 октября 2011

Вам необходимо переопределить метод toString () в Individual, чтобы фактически вывести содержимое класса.Объект toString () по умолчанию вернет то, что у вас есть выше.

0 голосов
/ 04 октября 2011

Метод toString реализуется java.lang.Object и возвращает имя класса объекта, за которым следует его hashCode. Если вы хотите напечатать что-то другое, вам нужно переопределить toString и заставить его возвращать то, что вы хотите.

Обратите внимание, что System.out.print(newIndi); вызывает метод toString для newIndi. Вам не нужно явно звонить toString().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...