【问题标题】:How to print this object in Java?如何在 Java 中打印这个对象?
【发布时间】:2021-11-30 13:32:59
【问题描述】:

我是 Java 新手,昨天我的教授给我发了一个样本测试。不幸的是,我被困在了一项任务中。

任务:

编写一个名为MyArray 的类,其中包含所有必要的方法。在类实例化之后,我们想在 Main.java 中像这样使用这个类:

// comments : expected outputs

System.out.println(myarray1); // []
System.out.println(myarray1.size()); // 0
System.out.println(myarray1.isEmpty()); // true
myarray1.append(51);
myarray1.append(75);
myarray1.append(24);
System.out.println(myarray1); // [51, 75, 24]
System.out.println(myarray1.size()); // 3
int last = myarray1.getLast();
System.out.println(last); // 24
int first = myarray1.getFirst();
System.out.println(first); // 51
myarray1.appendAll(List.of(15, 95, 124));
System.out.println(myarray1); // [51, 75, 24, 15, 95, 124]
System.out.println(MyArray.InstCount); // 1 <instantiation counter>

我已经成功实现了所有必要的方法,但是我无法理解这一行:

System.out.println(myarray1); // []

如何直接打印这个对象(ArrayList)?

我做不到。我的解决方法是一种名为print() 的新方法,它会打印 myarray1 对象:

在 Main.java 中:

System.out.println(myarray1.print()); // []

在 MyArray.java 中:

import java.util.List;
import java.util.ArrayList;

class MyArray
{
    public static int Count = 0;
    private List<Integer> numbers = new ArrayList<Integer>();

    MyArray()
    {
        Count++;
    }

    public List<Integer> print()
    {
        return numbers;
    }

  .
  . // other methods...
  .

}

【问题讨论】:

  • 实现 toString() 方法,所以它返回一个类似 "[element1, element2, ...]" 的字符串

标签: java class object arraylist


【解决方案1】:

print() 是一个有点奇怪的名字,如果该方法实际上不打印任何东西而是构造一个字符串。

println(Object obj) 方法存在于PrintStream 中(而System.out 是一个PrintStream)。它通过调用 toString() 方法打印对象(所有对象都有 - 您可以覆盖它):

public class MyArr {
    @Override public String toString() {
       return whatever your print() method was returning.
    }
}

【讨论】:

    【解决方案2】:

    您似乎需要重写 toString 方法。像这样的

    class MyArray {
    
        // other fields
    
        @Override
        public String toString() {
            return numbers.toString();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2013-03-11
      • 2020-11-01
      • 1970-01-01
      • 2015-07-01
      相关资源
      最近更新 更多