我一直在1/3上输出错误的输出。当我输入132或231时,所需的输出为123。当我输入321时,输出为132,我在这里缺少什么?
import java.util.Scanner;
public class Proj3 {
private static int min;
private static int max;
private static int mid;
public static void main (String[] args){
Scanner keyboard = new Scanner( System.in);
System.out.println("Enter three whole numbers <integers> to be sorted");
int n1 = keyboard.nextInt();
int n2 = keyboard.nextInt();
int n3 = keyboard.nextInt();
if (n1 <= n2 && n1 <= n3){
min = n1;
if (n2 <= n3){
mid = n2;
max = n3;
} else{
mid = n3;
max = n2;
}
}
else if(n2 <= n3){
min = n3;
mid = n1;
max = n2;
}else{
min = n3;
mid = n1;
max = n2;
}
System.out.println("Here are the three numbers sorted:"+min+""+mid+""+max+"");
}
}
答案 0 :(得分:1)
而不是分支if,你可以使用Math.min
和Math.max
来获取最小和最大数字(中间的数字将是剩下的唯一数字)
答案 1 :(得分:0)
你忘了if-branch。对于输入321,您在else块中运行并导致您的输出。试着弄清楚你忘了哪个案例,如果是这样的话就把它添加到另一个案例中。
修改强> 如果n1> n2目前尚不清楚它是否小于或大于n3。
答案 2 :(得分:0)
这是我的解决方案,我感谢那些帮助我思考@ZouZou,@ ROT13,@ Laf的人。
else if(n2 >= n3 && n2 <= n1){
max = n1;
mid = n2;
min = n3;}
答案 3 :(得分:0)
您可以稍微更改一下代码并使用数组。从扫描仪读入值,然后将它们添加到阵列中。从数组中,您可以使用.sort()
方法自动将数字按顺序排列。
Scanner input = new Scanner(System.in); // Starts scanner
int[] numbers = new int[3]; // Sets length to 3
for (int i = 0; i < numbers.length; i++) // Loops length
{
System.out.println("Please enter number"); // Asks for input
numbers[i] = input.nextInt(); // Adds to array
}
对值进行排序后,您可以调用.sort()
数组上的int[]
方法。我希望这是有道理的。你可以使用你所有的if语句,但为什么要比它应该更难?如果您需要任何帮助,请告诉我