我有一个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());
但这仍会产生类似的结果。
答案 0 :(得分:2)
您需要覆盖Individual
- Class。
public class Individual {
// ...
@Override
public String toString() {
// output
}
}
注意:eclipse可以为你的类生成一些基本的toString()方法(Source> Generate toString())。
答案 1 :(得分:1)
如果您只是尝试在另一个类中打印私有变量,则覆盖Individual类中的toString方法将允许您返回该变量(正如其他人所说)。只需创建一个toString方法:
public String toString()
{
return whateverYourVarNameIs;
}
默认情况下,尝试只打印对象名称将调用toString方法,如果不覆盖它,将返回对象的内存位置。
另一个想法可能只是创建一个新方法。
public String getGenes()
{
return whateverYourVarNameIs;
}
并做
System.out.println(whateverYourVarNameIs);
答案 2 :(得分:0)
toString
方法由java.lang.Object
实现,并返回对象的类名,后跟hashCode。如果你想打印除此之外的东西,你需要覆盖toString并让它返回你想要的东西。
请注意,System.out.print(newIndi);
会调用toString
上的newIndi
方法。您无需明确调用toString()
。
答案 3 :(得分:0)
您需要覆盖Individual中的toString()方法以实际输出类的内容。默认的Object toString()将返回您上面的内容。
答案 4 :(得分:0)
如果你想这样做,你的Individual Class应该重新实现toString方法,否则它将打印Java Reference(如你所见)。 System.out.println(newIndi)调用toString方法。