在Java中打印对象内部的数组

时间:2014-10-10 08:32:12

标签: java object

我有一个类和一个构造函数,用数字填充数组并对其进行排序:

public BinaryArray(int size){

    data = new int[size];
    for(int i:data){
        data[i] = 10 + generator.nextInt(90);
    }        
    Arrays.sort( data );
}

然后在我的另一个类中,我有主要的我要打印数组:

BinaryArray searchArray = new BinaryArray( 15 ); //  create the Object

    for(BinaryArray i:searchArray){
        System.out.println( searchArray[i] );
    }

但它的错误..我也编码这个但是它打印了......否则..

BinaryArray searchArray = new BinaryArray( 15 );
System.out.println( searchArray );

3 个答案:

答案 0 :(得分:3)

在具有数组的类中创建一个getter方法:

public int[] getArray() {
    return data;
}

然后在main方法中使用该方法:

BinaryArray searchArray = new BinaryArray(15);
for (int i : searchArray.getArray()) {
    System.out.println(i);
}

修改

您的构造函数有一个主要错误:

for(int i:data){
    data[i] = 10 + generator.nextInt(90);
}

i将始终设置为0,因为此数组中的每个字段都已使用0初始化。因此,只有第一个索引将使用随机数设置。其他人将保持0。

要解决此问题,请改用此循环:

for(int i = 0; i < data.length; i++){
  data[i] = 10 + generator.nextInt(90);
}

答案 1 :(得分:1)

这应该这样做。

1 - 为数组创建一个getter。

public int[] getArray() {
 return data;
}

2 - 显示数组

BinaryArray searchArray = new BinaryArray( 15 ); // create the Object

for(int i:searchArray.getArray()){
    System.out.println( i );
}

答案 2 :(得分:1)

首先,在上面的代码中,我总是等于0,你必须用索引

进行迭代
data = new int[size];
for(int i:data){
    data[i] = 10 + generator.nextInt(90);
}

您可以在toString

中实施BinaryArray
public class BinaryArray
{
    private int[] data;

    public BinaryArray(int size)
    {
        data = new int[size];
        for(int i: = 0; i < size; i++){
            data[i] = 10 + generator.nextInt(90);
        }        
        Arrays.sort( data );
    }

   public String toString()
   {
       for (int i : data)
       {
            System.out.println(i);
       }
   }
}

然后

BinaryArray searchArray = new BinaryArray( 15 );
System.out.println( searchArray );