打印阵列显示错误输出

时间:2013-10-02 13:58:50

标签: java arrays

这段代码有什么问题我的输出错误了。我不知道什么是错的,我希望你能帮助我:

public class Main{
  public static void main(String[] args){
    int[] data={11,22,33,55,22,88,99,77};

    SortingAlgo algo=new SortingAlgo();
    data=algo.selectionSort(data);
    System.out.println("numbers are"+ data);
  }
}

其他课程

public class SortingAlgo{
  public int[] selectionSort(int[] data){
    int lenD = data.length;
    int j = 0;
    int tmp = 0;
    for(int i=0;i<lenD;i++){
      j = i;
      for(int k = i;k<lenD;k++){
        if(data[j]>data[k]){
          j = k;
        }
      }
      tmp = data[i];
      data[i] = data[j];
      data[j] = tmp;
    }
      return data;
  }
}

这是我的出局:

numbers are[I@2e4b1dd8

3 个答案:

答案 0 :(得分:7)

输出完全正常。数组不会覆盖toString()方法,因此它会调用Object#toString()方法,该方法会生成这种表示形式。输出格式为:

getClass().getName() + '@' + Integer.toHexString(hashCode())

对于数组,Class#getName()方法对不同的元素类型使用一些编码来生成唯一的类名。编码规则在文档中指定。

要获得人类可读的表示形式,您可以使用Arrays#toString()方法:

System.out.println("numbers are"+ Arrays.toString(data));

答案 1 :(得分:4)

数组的toString()被破坏了。你需要

import java.util.Arrays;

System.out.println("numbers are" + Arrays.toString(data));

同样适用于Arrays.equals(),Arrays.hashCode()。 Array,Arrays,ArrayUtils类添加了您可能希望数组具有的功能。

http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Array.html

http://docs.oracle.com/javase/7/docs/api/java/sql/Array.html

http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/ArrayUtils.html

但是,您可能会发现您确实需要ArrayList。

答案 2 :(得分:4)

dataint数组。您应该使用已Arrays#toString()实施的this way

3860     public static String toString(int[] a) { {
3861        if (a == null)
3862            return "null";
3863        int iMax = a.length - 1;
3864        if (iMax == -1)
3865            return "[]";
3866
3867        StringBuilder b = new StringBuilder();
3868        b.append('[');
3869        for (int i = 0; ; i++) {
3870            b.append(a[i]);
3871            if (i == iMax)
3872                return b.append(']').toString();
3873            b.append(", ");
3874        }
3875    }

确保您理解它,它将帮助您理解数组。

您可以循环播放阵列并手动打印:

for(int i: data) {
    System.out.println(i + " ");
}

通过这种方式,您可以控制要打印的值,例如甚至价值观:

for(int i: data) {
    if(i % 2 == 0) {
        System.out.println(i + " ");
    }
}

关于你得到的输出,这是关于它的解释:

在Java中,每个对象都有toString()方法,默认显示类名表示,然后添加@,然后添加哈希码。