public static void main(String[] args) throws Exception {
// declarations
int i, z, x, greatest;
int[] array = { 2, 3, 4, 55, 6 };
int[] copyarray = { 0, 0, 0, 0, 0 };
int zz;
greatest = array[0];
for (zz = 0; zz < 5; zz++) {
for (x = 0; x < 5; x++) {
if (array[x] > greatest) {
greatest = array[x];
}
}
copyarray[zz] = greatest; // this will contain the sorted array
// part of the nested loop
for (z = 0; z < 5; z++) {
if (greatest == array[z]) {
array[z] = 0;
}
}
}
// not part of the nested loop
for (i = 0; i < 5; i++) {
System.out.println("sorted array: " + copyarray);
}
}
输出:
sorted array: [I@1a16869
sorted array: [I@1a16869
sorted array: [I@1a16869
sorted array: [I@1a16869
sorted array: [I@1a16869
这只是一个基本的小程序,我试图让逻辑正确。我无法改进它或将它变成一个类或方法,因为我甚至没有得到正确的输出。
答案 0 :(得分:1)
如果您尝试使用自己的算法,我建议您尝试使用IDE并调试代码。
如果要使用JDK提供的算法,可以使用:
Arrays.sort(array);
关于输出,您正在尝试打印数组,而数组是java中没有toString实现的对象。因此,您应该将print语句更改为:
System.out.println("sorted array: "+Arrays.toString(copyarray));//without surrounding for loop to get what its after each step of sorting elements.
或者如果你想保留你的for循环,那么你可以使用基于索引的数组访问,如:
System.out.print(copyarray[i] + " ");
答案 1 :(得分:0)
您正在打印参考而不是值 使用方法:
for(int i = 0; i < copyarray.length; i++ ) {
System.out.println("Value : " + copyarray[i]);
}
我还建议使用Arrays.sort(array);
写一下
private int[] values = { 9,2,5,3,1,7,0 };
public void printSorted() {
Arrays.sort(values);
for(int i = 0; i < values.length; i++) {
System.out.println("Value: " + values[i]);
}
}
答案 2 :(得分:0)
实际上,这里的答案都没有。
问题的核心在于您没有为每次迭代重新初始化变量greatest
。它在开头设置为array[0];
,并且永远不会再次更改。这应该进入循环。
public static void main(String[] args) throws Exception {
// declarations
int i, z, x, greatest;
int[] array = { 2, 3, 4, 55, 6 };
int[] copyarray = { 0, 0, 0, 0, 0 };
int zz;
// greatest = array[0]; <---- Don't do it here
for (zz = 0; zz < 5; zz++) {
greatest = array[0]; // <--- Initialize greatest here and not before the loop
for (x = 0; x < 5; x++) {
if (array[x] > greatest) {
greatest = array[x];
}
}
copyarray[zz] = greatest; // this will contain the sorted array
// part of the nested loop
for (z = 0; z < 5; z++) {
if (greatest == array[z]) {
array[z] = 0;
}
}
}
// not part of the nested loop
for (i = 0; i < 5; i++) {
System.out.println("sorted array: " + copyarray[i]);
}
}
作为旁注,您正在错误地打印数组,您应该使用copyarray[i]
而不是copyarray
。
将这两个更改输出,输出结果如下:
sorted array: 55
sorted array: 6
sorted array: 4
sorted array: 3
sorted array: 2