JAVA如何使用方法打印出主数组?

JAVA如何使用方法打印出主数组?,java,methods,return,Java,Methods,Return,因此,我需要创建一个方法,该方法将接受整数并返回一个长度为3的数组,其中三个整数作为输入 这是我创建的,但它返回此[I@7852e922 public class IntsToArray { public static int[] fill(int a, int b, int c){ int[] array = new int[3]; array[0] = a; array[1] = b; array[2] = c; return

因此,我需要创建一个方法,该方法将接受整数并返回一个长度为3的数组,其中三个整数作为输入

这是我创建的,但它返回此
[I@7852e922

public class IntsToArray {
  public static int[] fill(int a, int b, int c){
      int[] array = new int[3];
      array[0] = a;
      array[1] = b;
      array[2] = c;
      return (array);
  }
    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        int[] array = fill(a, b, c);
        System.out.println(array);
    }
}

我做错了什么?

将数组传递给System.out.println()时,将调用数组的toString()方法并写入结果字符串。对于数组,没有toString()的特定实现,因此使用了超类对象的toString()。Object.toString()定义为:

getClass().getName() + '@' + Integer.toHexString(hashCode());
这就是
[I@7852e922
您看到的。本质上,这是数组实例的内部id

要打印数组的内容,请执行以下操作:

System.out.println(Arrays.toString(array));
或者这个:

for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
}
for(int i=0;i
将数组传递给System.out.println()时,将调用数组的toString()方法并写入结果字符串。对于数组,没有toString()的特定实现,因此将使用超类对象的toString()。Object.toString()定义为:

getClass().getName() + '@' + Integer.toHexString(hashCode());
这就是
[I@7852e922
您看到的。本质上,这是数组实例的内部id

要打印数组的内容,请执行以下操作:

System.out.println(Arrays.toString(array));
或者这个:

for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
}
for(int i=0;i
正如您提到的不要使用库,您可以从类数组中提取代码:

public static String stringify(int[] a) {
    if (a == null)
        return "null";
    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(a[i]);
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}
public class IntsToArray {
    public static int[] fill(int a, int b, int c){
      int[] array = new int[3];
      array[0] = a;
      array[1] = b;
      array[2] = c;
      return (array);
    }
    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        int[] array = fill(a, b, c);

        System.out.println(stringify(array));
    }
}
并按如下方式使用:

public static String stringify(int[] a) {
    if (a == null)
        return "null";
    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(a[i]);
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}
public class IntsToArray {
    public static int[] fill(int a, int b, int c){
      int[] array = new int[3];
      array[0] = a;
      array[1] = b;
      array[2] = c;
      return (array);
    }
    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        int[] array = fill(a, b, c);

        System.out.println(stringify(array));
    }
}

正如您提到的不要使用库,您可以从类数组中提取代码:

public static String stringify(int[] a) {
    if (a == null)
        return "null";
    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(a[i]);
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}
public class IntsToArray {
    public static int[] fill(int a, int b, int c){
      int[] array = new int[3];
      array[0] = a;
      array[1] = b;
      array[2] = c;
      return (array);
    }
    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        int[] array = fill(a, b, c);

        System.out.println(stringify(array));
    }
}
并按如下方式使用:

public static String stringify(int[] a) {
    if (a == null)
        return "null";
    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(a[i]);
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}
public class IntsToArray {
    public static int[] fill(int a, int b, int c){
      int[] array = new int[3];
      array[0] = a;
      array[1] = b;
      array[2] = c;
      return (array);
    }
    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        int[] array = fill(a, b, c);

        System.out.println(stringify(array));
    }
}

如果你想打印一个数组,你应该迭代它的所有成员并打印每个成员。你现在要做的是打印数组对象,它打印它的内存地址,使用对象基类的默认toString()方法,正如bhspencer所指出的,来打印数组

试试这个:

public class IntsToArray {
  public static int[] fill(int a, int b, int c){
      int[] array = new int[3];
      array[0] = a;
      array[1] = b;
      array[2] = c;
      return (array);
  }
    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        int[] array = fill(a, b, c);

        for(int i = 0; i < array.length; i++)
        {
            System.out.println(array[i]);
        }
    }
}
公共类IntsToArray{
公共静态int[]填充(int a、int b、int c){
int[]数组=新的int[3];
数组[0]=a;
数组[1]=b;
数组[2]=c;
返回(数组);
}
公共静态void main(字符串[]args){
inta=Integer.parseInt(args[0]);
intb=Integer.parseInt(args[1]);
intc=Integer.parseInt(args[2]);
int[]数组=填充(a,b,c);
for(int i=0;i
如果你想打印一个数组,你应该迭代它的所有成员并打印每个成员。现在你要做的是打印数组对象,该数组对象打印它的内存地址,使用bhspencer指出的对象基类的默认toString()方法来打印数组

试试这个:

public class IntsToArray {
  public static int[] fill(int a, int b, int c){
      int[] array = new int[3];
      array[0] = a;
      array[1] = b;
      array[2] = c;
      return (array);
  }
    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        int[] array = fill(a, b, c);

        for(int i = 0; i < array.length; i++)
        {
            System.out.println(array[i]);
        }
    }
}
公共类IntsToArray{
公共静态int[]填充(int a、int b、int c){
int[]数组=新的int[3];
数组[0]=a;
数组[1]=b;
数组[2]=c;
返回(数组);
}
公共静态void main(字符串[]args){
inta=Integer.parseInt(args[0]);
intb=Integer.parseInt(args[1]);
intc=Integer.parseInt(args[2]);
int[]数组=填充(a,b,c);
for(int i=0;i
“所以我的问题是我不允许使用库中的任何内容。所以只允许使用简单的解决方案”我认为@Juan的答案非常简单,你也可以对(int ele:array){System.out.println(ele);}使用基于范围的循环
“所以我的问题是我不允许使用库中的任何内容。所以只允许使用简单的解决方案”我认为@Juan的答案很简单,你也可以使用一个基于范围的循环
for(int-ele:array){System.out.println(ele);}
太棒了,非常感谢!我需要的确切答案。你说“打印它的内存地址”。这是不正确的。事实上,您正在打印数组哈希的字符串表示形式加上类名。有关详细信息,请参阅我的答案,太棒了,非常感谢!我需要的确切答案。您说“打印它的内存地址”。这是不正确的。事实上,您正在打印数组哈希加类名的字符串表示形式。有关详细信息,请参阅我的答案,