0

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

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
4

3 回答 3

7

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

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

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

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

System.out.println("numbers are"+ Arrays.toString(data));
于 2013-10-02T14:00:20.580 回答
4

data是一个s的数组int你应该使用Arrays#toString(),它是这样实现的:

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()方法,默认是显示类名表示,然后添加@,然后是哈希码。

于 2013-10-02T14:01:56.820 回答
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。

于 2013-10-02T14:00:29.067 回答