Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用toString打印对象的特定实例_Java_Arrays_Abstract Class_Subclass_Instanceof - Fatal编程技术网

Java 如何使用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++) {

如何使用toString打印对象的特定实例

因此,用户基本上是在输入信息。根据输入,它将保存在实例A或实例B中。实例A和实例B都是具有重写toString方法的子类。因此,来自用户的输入保存在一个数组中。如何使所有作为实例的输入都打印出来

这是我目前拥有的代码,它不起作用

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是。这就是为什么我使用了a
StringBuilder
。好吧,添加Arrays.toString会有帮助,但正如您所说,它会打印出所有内容,而不是a的实例。总的来说,需要做的是,如果用户想打印a的所有实例,他们会从菜单中选择,如果他们想打印B的实例,他们可以这样做。这会输出阵列中的所有内容。。有没有办法只打印a的实例?可能是因为“if(inputs[i]instanceof a)”每次都是真的。
JOptionPane.showMessageDialog(null, inputs[i].toString());