我是初学者学习java,我试图将数组中的变量按降序传递给另一个数组。这是我的代码:
int num[] = new int[6];
int DecSort[] = new int[6];
System.out.println("Input 6 numbers: ");
for (int i = 0; i < 6; i++) {
num[i] = Integer.parseInt(br.readLine());
}
//sorted array is descending
int max = num[0];
int maxpos = 0;
for (int j = 0; j < 6; j++) {
for (int i = 0; i < 6; i++) {
if (num[i] > max) {
max = num[i];
maxpos = i;
}
}
DecSort[j] = max;
max = num[0];
num[maxpos] = Integer.MIN_VALUE;
}
System.out.println("sorted array");
for (int i = 0; i < 6; i++) {
System.out.println(DecSort[i]);
}
当我输入213,45,1234,765,23,5作为数组时,它输出: 排序数组 1234 765 213 213 213 213
我不确定我的错误在哪里,请帮忙!
答案 0 :(得分:0)
问题是您正在将max
初始化为num[0]
。这意味着将永远不会找到数组中小于第一个数字的任何数字,因为num[i] > max
始终为false
。您可以通过将max
的初始值设置为Integer.MIN_VALUE
来解决此问题。
但是,您是否知道Java标准库已具有排序功能。您可以使用它按升序对数组进行排序,然后反向打印它:
int num[] = new int[6];
System.out.println("Input 6 numbers: ");
for (int i = 0; i < 6; i++) {
num[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(num);
System.out.println("sorted array");
for (int i = 5; i >= 0; --i) {
System.out.println(num[i]);
}
如果你需要的话,我会告诉你如何将升序阵列变成降序阵列。 ;)
或者,使用NavigableSet
,您甚至可以让Java在运行中为您排序:
NavigableSet<Integer> nums = new TreeSet<>();
System.out.println("Input 6 numbers: ");
for (int i = 0; i < 6; i++) {
nums.add(Integer.valueOf(br.readLine()));
}
Integer[] sortedNums = nums.descendingSet().toArray(new Integer[6]);
答案 1 :(得分:0)
我只更改了一些代码:
1 - 删除了 DecSort 数组,因为它不需要。
2 - 应用冒泡排序降序算法。
3 - 将de break条件更改为 ,以便用于任何大小的数组。
看看:
public void orderDescending() {
int num[] = { 213, 45, 1234, 765, 23, 5 };
// sorted array is descending
int maxpos = 0;
for (int j = 0; j < num.length; j++) {
for (int i = j; i < num.length - 1; i++) {
if (num[i] > num[j]) {
int tempA = num[i];
num[i] = num[j];
num[j] = tempA;
}
}
}
System.out.println("sorted array");
for (int i = 0; i < 6; i++) {
System.out.println(num[i]);
}
}
只需进行一些修改并且完美无缺!
答案 2 :(得分:0)
可以创建Comparator,可以控制升序和降序。
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
};
// option 1
Integer[] array = new Integer[] { 1, 24, 4, 4, 345 };
Arrays.sort(array, comparator);