如何返回另一个类调用的数组?

时间:2018-10-10 18:17:48

标签: java arrays

所以我之前问了一个有关在Java中返回数组的问题,我得到了答案,现在我的代码已用getter进行了更新,但是我一直沿用以下方法:

Phone@b08deb 

作为输出,这不是我想要的,如果我要执行以下操作:

return arr[1];

它告诉我Phone无法转换为Phone [],而我对于如何简单地从数组中获取编译器吐出的“ 00000”这个数字深感迷惑(据我所知,不需要初始化数组,因为它默认为0)

链接到问题: How do I return an array to another class in Java?

更新的代码:

class TheDriverClass
{
    public static void main(String[] args)
    {
        Phone p = new Phone(5);
        System.out.println(p); 
// Here it's supposed to return the values of an array with size 5, 
//so it should print out 00000
     }
}

接下来我有电话课:

class Phone
{
   private Phone[] arr; //I'm supposed to keep the array private
   public Phone(int theLength){
      arr = new Phone[size];
   }
   public Phone[] getPhone(){
      return arr;
   }
}

3 个答案:

答案 0 :(得分:1)

当您使用System.out.println()数组时,它基本上会打印出数组指针。

您需要类似Arrays.toString(array)的东西,它将在每个元素上调用toString并打印出人类可读的东西。

还有一部可以阅读的手机。您还需要覆盖其上的toString()。

class Phone
{
   private int[] numbers; //I'm supposed to keep the array private
   public Phone(int theLength){
       numbers = new int[theLength];
   }
   public int[] getPhone(){
      return numbers;
   }

   @Override
   public String toString() {
       return Arrays.toString(numbers);// also can use  return Arrays.toString(numbers).replaceAll(",|\\[|\\]| ", ""); to clean up the , and []s
   }
}

答案 1 :(得分:1)

public class HelloWorld {

    public static void main(String[] args) {
        Phone p = new Phone(5);
        System.out.println(p.getPhone());
    }
}

class Phone {

  private int[] arr;

  public Phone(int size) {
    this.arr = new int[size];
  }

  /* convert array to string */
  public String getPhone() {
     return Arrays.toString(arr);
  }
}
  • 如果您希望以“ 00000”格式获得准确的输出,则需要使用StringBuilder
  • 在Phone类中,Phone [] arr将默认为null,因此使用int []将默认值为0

答案 2 :(得分:0)

如果您不想在Phone类中进行任何更改,请在CustomPhone类中继承Phone类并覆盖toString。当Phone类不是最后的课程时,这将起作用。我猜下面的代码可能会解决您的问题。

class PhoneCustom extends Phone{

public PhoneCustom(int theLength) {
    super(theLength);
}
@Override
public String toString() {
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < super.getPhone().length; i++) {      
        if(super.getPhone()[i] == null) {
            sb.append(0);
        }else {
            sb.append(super.getPhone()[i]);

        }

    }
    return sb.toString();
}
}

此外,根据其他部分的要求修改toString。

如果您可以灵活地修改电话类,请重写电话类中的toString方法。

class Phone
{
private Phone[] arr; //I'm supposed to keep the array private
public Phone(int theLength){
    arr = new Phone[theLength];
}
public Phone[] getPhone(){
    return arr;
}
@Override
public String toString() {
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < arr.length; i++) {       
        if(arr[i] == null) {
            sb.append(0);
        }else {
            sb.append(arr[i]);

        }

    }
    return sb.toString();
}
}