在 Java 中按升序对三个数字进行排序时出现问题

新手上路,请多包涵

我目前正在开发一个程序,但我无法让它按照预期的方式工作。我需要使用扫描仪输入三个整数,然后按升序输出数字。我在技术上让这个工作,但它没有遵循它必须遵循的结构。在我的主要方法中,我有声明和输入。然后我必须使用第二种方法进行排序。当我将排序放在这种新方法中时,我终究无法对数字进行排序。它编译,我运行它,输入数字并结束程序。如果没有第二种方法,它主要运行正确。当它在第二种方法之外运行时,我认为在我认为对数字进行排序的方式中也存在一些错误。

无论如何,这是我想出的代码。

 import java.util.Scanner;
public class Ch5PA1
{
public static void main(String[] args) {
// Declarations
Scanner input = new Scanner(System.in);

System.out.print("Enter three values: ");
int num1 = input.nextInt();
int num2 = input.nextInt();
int num3 = input.nextInt();
}

/** Sort Numbers */
public static void displaySortedNumbers(double num1, double num2, double num3){
if ((num1 < num2) && (num2 < num3)){
    System.out.println("The sorted numbers are " + num1 + " " + num2 + " " + num3);
    }
if ((num1 < num2) && (num2 > num3)){
    System.out.println("The sorted numbers are " + num1 + " " + num3 + " " + num2);
    }
if ((num1 > num2) && (num2 > num3)){
    System.out.println("The sorted numbers are " + num3 + " " + num2 + " " + num1);
    }
if ((num1 > num2) && (num2 < num3)){
    System.out.println("The sorted numbers are " + num2 + " " + num1 + " " + num3);
    }
}
}

另一件事,环顾四周,我看到了一些关于我遇到的相同(或相似)问题的问题,但答复坚持使用数组。我根本不能为此使用数组。

提前致谢。

原文由 Austin Ray 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 354
2 个回答

在您的主要方法中调用您的方法:

 public static void main(String[] args) {
    // Declarations
    Scanner input = new Scanner(System.in);

    System.out.print("Enter three values: ");
    int num1 = input.nextInt();
    int num2 = input.nextInt();
    int num3 = input.nextInt();
    displaySortedNumbers(num1, num2, num3);
}

并了解更多信息。关于对 3 个数字进行排序,这是一篇旧帖子:

在 Java 中对 3 个值进行排序的最快方法

看看你的代码,我认为仅仅通过比较 2 次就可以对 3 个数字进行排序。

原文由 Christian Tapia 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您正在寻找一个简短的解决方案,也许您可以尝试以下方法:

 public static void print(final int n1, final int n2, final int n3){
    final int highest = n1 > n2 && n1 > n3 ? n1 : n2 > n1 && n2 > n3 ? n2 : n3;
    final int lowest = n1 < n2 && n1 < n3 ? n1 : n2 < n1 && n2 < n3 ? n2 : n3;
    final int middle = n1 != highest && n1 != lowest ? n1 : n2 != highest && n2 != lowest ? n2 : n3;
    System.out.printf("%d > %d > %d", highest, middle, lowest);
}

原文由 Josh M 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题