我已经尝试了一切,但我无法让这段代码按从大到小的顺序打印 5 个数字。任何帮助将不胜感激。 java网站告诉我要写更多,所以就这样了。我将使用循环来实现此目的,但该任务要求不使用循环。我在不使用循环的情况下无法从最大到最小打印这 5 个数字。请帮忙
import java.util.Scanner;
public class InOrder{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int hi=0;
int hi2=0;
int mid=0;
int low=0;
int low2=0;
System.out.println("Enter 5 variables:");
int num1 = input.nextInt();
int num2 = input.nextInt();
int num3 = input.nextInt();
int num4 = input.nextInt();
int num5 = input.nextInt();
//Finds the highest number
if ((num1 >= num2) && (num1 >= num3) && (num1 >= num4) && (num1 >= num5)) {
hi = num1;
} else if ((num2 >= num1) && (num2 >= num3) && (num2 >= num4) && (num2 >= num5)) {
hi = num2;
} else if ((num3 >= num1) && (num3 >= num2) && (num3 >= num4) && (num3 >= num5)) {
hi = num3;
} else if ((num4 >= num1) && (num4 >= num2) && (num4 >= num3) && (num4 >= num5)) {
hi = num4;
} else if ((num5 >= num1) && (num5 >= num2) && (num5 >= num3) && (num5 >= num4)) {
hi = num5;
}
// Finds Second Highest
if ((num1 > mid) && (num1 > low) && (num1 > low2) && (num1 < hi)) {
hi2 = num1;
} else if ((num2 > mid) && (num2 > low) && (num2 > low2) && (num2 < hi)) {
hi2 = num2;
} else if ((num3 > mid) && (num3 > low) && (num3 > low2) && (num3 < hi)) {
hi2 = num3;
} else if ((num4 > mid) && (num4 > low) && (num4 > low2) && (num4 < hi)) {
hi2 = num4;
} else if ((num5 > mid) && (num5 > low) && (num5 > low2) && (num5 < hi)) {
hi2 = num5;
}
//Finds the middle number
if ((num1 < hi) && (num1 < hi2) && (num1 > low2) && (num1 > low)) {
mid = num1;
} else if ((num2 < hi) && (num2 < hi2) && (num2 > low2) && (num2 > low)) {
mid = num2;
} else if ((num3 < hi) && (num3 < hi2) && (num3 > low2) && (num3 > low)) {
mid = num3;
} else if ((num4 < hi) && (num4 < hi2) && (num4 > low2) && (num4 > low)) {
mid = num4;
} else if ((num5 < hi) && (num5 < hi2) && (num5 > low2) && (num5 > low)) {
mid = num5;
}
//Finds the lowest number
if ((num1 <= num2) && (num1 <= num3) && (num1 <= num4) && (num1 <= num5)) {
low = num1;
} else if ((num2 <= num1) && (num2 <= num3) && (num2 <= num4) && (num2 <= num5)) {
low = num2;
} else if ((num3 <= num1) && (num3 <= num2) && (num3 <= num4) && (num3 <= num5)) {
low = num3;
} else if ((num4 <= num1) && (num4 <= num2) && (num4 <= num3) && (num4 <= num5)) {
low = num4;
} else if ((num5 <= num1) && (num5 <= num2) && (num5 <= num3) && (num5 <= num4)) {
low = num5;
}
//Finds Second Lowest
if ((num1 < mid) && (num1 > low) && (num1 < hi2) && (num1 < hi)) {
low2 = num1;
} else if ((num2 < mid) && (num2 > low) && (num2 < hi2) && (num2 < hi)) {
low2 = num2;
} else if ((num3 < mid) && (num3 > low) && (num3 < hi2) && (num3 < hi)) {
low2 = num3;
} else if ((num4 < mid) && (num4 > low) && (num4 < hi2) && (num4 < hi)) {
low2 = num4;
} else if ((num5 < mid) && (num5 > low) && (num5 < hi2) && (num5 < hi)) {
low2 = num5;
}
System.out.println("The variables from greatest to least are:");
System.out.print("" + hi);
System.out.print("," + hi2);
System.out.print("," + mid);
System.out.print("," + low2);
System.out.print("," + low);
}
}
最佳答案
还有罗马格拉夫的回答 您需要将其包含在文档顶部
import java.util.Arrays;
尝试做这样的事情:
public class NoLoopSort {
static int[] values = new int[] { 4, 2, 5, 1, 3 };
public static void main(String[] args) {
printLower(0, values.length - 1);
printLower(0, values.length - 1);
printLower(0, values.length - 1);
printLower(0, values.length - 1);
printLower(0, values.length - 1);
}
private static void printLower(int start, int end) {
if (start == end) {
// this is currently the lowest number in array, print it.
System.out.println(values[start]);
// make current index biggest possible
values[start] = Integer.MAX_VALUE;
} else {
if (values[start] < values[end]) {
printLower(start, end - 1);
} else if (values[start] >= values[end]) {
printLower(start + 1, end);
}
}
}
}
上面是一个递归交换函数,基本上只是从头开始,然后检查数组中的下一个数字是否更大或更小,如果小于,则交换两个数字并重新开始,否则继续前进下一个数字。
[编辑] java 代码替换为经过测试的版本。
关于java - 尝试编写一个代码,在不使用循环的情况下从最大到最小打印五个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207814/