Java 如何使用toString打印对象的特定实例
如何使用toString打印对象的特定实例 因此,用户基本上是在输入信息。根据输入,它将保存在实例A或实例B中。实例A和实例B都是具有重写toString方法的子类。因此,来自用户的输入保存在一个数组中。如何使所有作为实例的输入都打印出来 这是我目前拥有的代码,它不起作用Java 如何使用toString打印对象的特定实例,java,arrays,abstract-class,subclass,instanceof,Java,Arrays,Abstract Class,Subclass,Instanceof,如何使用toString打印对象的特定实例 因此,用户基本上是在输入信息。根据输入,它将保存在实例A或实例B中。实例A和实例B都是具有重写toString方法的子类。因此,来自用户的输入保存在一个数组中。如何使所有作为实例的输入都打印出来 这是我目前拥有的代码,它不起作用 public static void printA(ABC[] inputs) { for(int i = 0; i < inputs.length; i++) {
public static void printA(ABC[] inputs)
{
for(int i = 0; i < inputs.length; i++)
{
if(inputs[i] instanceof A)
{
JOptionPane.showMessageDialog(null, inputs.toString());
}
}
}
publicstaticvoidprinta(ABC[]输入)
{
对于(int i=0;i
您正在迭代输入
,但正在测试客户端
。这就是为什么我更喜欢使用,我建议您使用构建单个消息,然后显示一次。大概
public static void printA(ABC[] inputs) {
StringBuilder sb = new StringBuilder();
for (ABC input : inputs) {
if (input instanceof A) {
sb.append(input).append(System.lineSeparator());
}
}
JOptionPane.showMessageDialog(null, sb.toString().trim());
}
编辑
您获得的输出(“LClient;@20d9896e”)是因为您正在显示inputs.toString()
。数组不重写toString()
,您可以使用
但您将获得数组中的所有项。另外,确保客户端
覆盖了toString()
您只需要
JOptionPane.showMessageDialog(null, inputs[i].toString());
因为您试图显示的是
数组.toString()
不是您想要的值。它到底是如何“不工作”的?你能编译你的代码吗?你得到什么结果了吗?我可以编译它我得到“LClient;@20d9896e”作为输出除了使用StringBuilder还有其他方法吗?那么某人附加了什么?它是。当然,您可以使用作业窗格
,但它会为每个a
显示一条新消息。是否仍要在一个作业窗格中打印出a的所有实例?@Mwam94是。这就是为什么我使用了aStringBuilder
。好吧,添加Arrays.toString会有帮助,但正如您所说,它会打印出所有内容,而不是a的实例。总的来说,需要做的是,如果用户想打印a的所有实例,他们会从菜单中选择,如果他们想打印B的实例,他们可以这样做。这会输出阵列中的所有内容。。有没有办法只打印a的实例?可能是因为“if(inputs[i]instanceof a)”每次都是真的。
JOptionPane.showMessageDialog(null, inputs[i].toString());