【问题标题】:How to print out instance of object that is stored in an array如何打印出存储在数组中的对象实例
【发布时间】:2014-11-29 16:18:31
【问题描述】:

所以我需要打印出数组的不同实例。使用下面的代码。数组中的所有内容都会打印出来,即使是数组中没有填充任何内容的部分。如果我在每个 if 语句中添加一个 break 语句,它只会打印该数组的最后一个实例,而不是存储的所有内容。

public static void display(ExampleA[] example)
{ 
    for(int pos = 0; pos < example.length; pos++) 
    {   
        output += "Example number " + (i + 1);
       if(example[pos] instanceof A)
        {
                output += example[pos].toString() + "\n\n";             
        }

        if(example[pos] instanceof B)
        {
            output += example[pos].toString() + "\n\n"; 
        }

    }

我想要它做的是打印出由实例组合在一起的数组中的所有内容。而不是部分为空的整个数组。

【问题讨论】:

  • 提供一个测试用例。我不明白你的问题。
  • 因此,例如我运行程序,数组中总共存储了 3 个对象。我不明白为什么数组中的所有空格都打印在 JOptionPane 中。如果我添加一个 break 语句,只有最后输入的实例会打印出来。
  • 数组元素永远不会为空。您是否试图避免使用 null 的元素?你的类层次结构是什么样的? casesA 中有什么内容?您是什么意思“按实例分组”?此外,您似乎遇到了术语问题。请检查类、超类和实例的定义。
  • 您可能想查看enhanced for loops(在页面底部)。它们使代码更简洁,更易于阅读。
  • 如果你提供void display的调用方法(ExampleA[]例子)那么我们就可以达到你想要的......

标签: java arrays object tostring instanceof


【解决方案1】:

您可以创建两个output 变量,一个用于A 实例,一个用于B 实例。然后您可以将每个实例附加到其对应的输出变量中,并在最后打印输出变量。这是使用您的代码的示例:

public static void display(ExampleA[] example)
{ 
    for(int pos = 0; pos < example.length; pos++) 
    {   
        if(example[pos] instanceof A)
        {
            outputA += "Example number " + (i + 1);
            outputA += example[pos].toString() + "\n\n";             
        }

        if(example[pos] instanceof B)
        {
            outputB += "Example number " + (i + 1);
            outputB += example[pos].toString() + "\n\n"; 
        }

    }

    System.out.println("A:\n" + outputA);
    System.out.println("B:\n" + outputB);
}

您还应该考虑使用StringBuilder 附加字符串,因为它比使用+= 快得多

【讨论】:

  • 嘿格雷格!所以这实际上是行不通的。我没有打印出所有的实例。
  • 我很抱歉,格雷格我错过了一条可能导致问题的重要信息,我需要为数组编号,所以我添加了 output += "Number:" + (i + 1) + "\n";这是导致问题的原因
  • 那么...您还有问题吗?如果有,是什么?
  • 是的,当我尝试对示例进行编号时,它会打印出数组的空格。我编辑了上面的代码!
  • 如果您希望仅在每个组中打印数字,您只需将数字的附加内容移动到 if 语句中。查看我编辑的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2020-03-25
  • 2021-10-22
  • 2014-06-19
  • 2011-09-19
  • 1970-01-01
  • 2021-01-29
相关资源
最近更新 更多