这段代码有什么问题我的输出错误了。我不知道什么是错的,我希望你能帮助我:
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
答案 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
但是,您可能会发现您确实需要ArrayList。
答案 2 :(得分:4)
data
是int
的数组。您应该使用已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()
方法,默认显示类名表示,然后添加@
,然后添加哈希码。