Java 使用分支if-else语句进行排序

Java 使用分支if-else语句进行排序,java,Java,我一直在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){

我一直在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+"");
    }
}
import java.util.Scanner;
公共类项目3{
私有静态int-min;
私有静态int max;
私有静态int mid;
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“输入要排序的三个整数”);
int n1=keyboard.nextInt();
int n2=keyboard.nextInt();
int n3=keyboard.nextInt();

if(n1而不是分支if,您可以使用
Math.min
Math.max
来获得最小和最大数字(中间的数字将是剩下的唯一数字)您忘记了if分支。对于在else块中运行的输入321,这会导致输出。请尝试找出您忘记的是哪种情况,并将其添加为另一种else if情况

编辑:
如果n1>n2,它是比n3小还是比n3大还不清楚。

这是我的解决方案。我感谢那些帮助我思考这个@ZouZou,@ROT13,@Laf的人

else if(n2 >= n3 && n2 <= n1){
       max = n1;
       mid = n2;
       min = n3;}

else如果(n2>=n3&&n2您可以稍微更改代码并使用数组。从扫描仪读入值,然后将其添加到数组中。从数组中,您可以使用将自动按顺序排列数字的
.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
}
Scanner input=新扫描仪(System.in);//启动扫描仪
int[]number=new int[3];//将长度设置为3
for(int i=0;i

对值进行排序后,可以调用
int[]上的
.sort()
方法
array。我希望这是有意义的。你可以使用所有的if语句,但为什么要让它变得比应该的更难呢?如果你需要任何帮助,请告诉我。

在调试器中跟踪代码可能有助于你直观地看到代码中发生了什么,错误对你来说是显而易见的。或者用笔和纸来看看你的逻辑有什么问题。