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

Java 如何返回另一个类调用的数组?,java,arrays,Java,Arrays,所以我之前问了一个关于在Java中返回数组的问题,我得到了答案,现在我的代码用getter进行了更新,但是我一直得到以下方面的信息: Phone@b08deb 作为一个输出,这不是我想要的,如果我要做以下事情: return arr[1]; 它告诉我Phone无法转换为Phone[],我难以置信地不知道如何简单地从数组中获取编译器要吐出的数字“00000”(据我所知,我不需要初始化数组,因为它默认为0) 问题链接: 更新代码: class TheDriverClass { pub

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

Phone@b08deb 
作为一个输出,这不是我想要的,如果我要做以下事情:

return arr[1];
它告诉我Phone无法转换为Phone[],我难以置信地不知道如何简单地从数组中获取编译器要吐出的数字“00000”(据我所知,我不需要初始化数组,因为它默认为0)

问题链接:

更新代码:

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;
   }
}

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

您需要类似array.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
   }
}

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

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();
}
}
class Phone自定义扩展电话{
公用电话自定义(整数长度){
超级(长度);
}
@凌驾
公共字符串toString(){
StringBuffer sb=新的StringBuffer();
对于(inti=0;i
另外,根据您在其他部分中的要求修改toString

如果您可以灵活地修改phone类,那么可以重写phone类中的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();
}
}
class电话
{
私人电话[]arr;//我应该让阵列保持私人状态
公用电话(国际长途){
arr=新手机[长度];
}
公用电话[]getPhone(){
返回arr;
}
@凌驾
公共字符串toString(){
StringBuffer sb=新的StringBuffer();
对于(int i=0;i
  • 如果希望获得“00000”格式的精确输出,则需要使用StringBuilder
  • 在Phone类中,Phone[]arr将默认为null,因此使用int[]将默认值设置为0

试着看看这个问题/答案:除此之外,你还需要在你的
手机中编写
toString()
方法,你想打印出什么?Phone类似乎不包含任何有意义的数据。@MickMnemonic因为在Driver类中给出了Phone类中数组的长度(Phone p=new Phone(5);),我希望Phone类获取该数字并将其用作数组的大小,然后像这样返回数组:00000(或者不管数组的长度有多少个零)嗯,
System.out.println(“00000”)怎么样
?你想实现什么?我不是想粗鲁,但你似乎真的不明白问题所在。如果你暗示我这样做的话,我不应该对我的驱动程序类做任何更改,我该如何重写toString()?如果你不想要,和[]你可以使用return array.toString(数字).replaceAll(“,|\[|\]|”,”);
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);
  }
}