-2

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

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

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);
    }
}
}

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

提前谢谢。

4

9 回答 9

2

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

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);
}
于 2013-10-23T05:54:53.250 回答
1

您可以输入的订单数量为 3!即 3*2*1 = 6。您只有 4 个条件,因此您缺少这六个条件中的两个。尝试找到剩余的。

于 2013-10-23T05:40:08.763 回答
0

您的主要问题是您实际上并没有在代码中的任何地方调用排序方法。你必须这样做并传递参数,没有神奇的仙女知道你想调用那个特定的方法。

doubles另外,当您向用户询问时,为什么要使用您的参数ints

于 2013-10-23T05:40:16.080 回答
0

将它们放入列表并按以下方式排序Collections.sort()

于 2013-10-23T05:37:00.543 回答
0

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

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 个数字进行排序是不可能的。

于 2013-10-23T05:41:36.577 回答
0
import java.util.Scanner;
public class Test {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
//============================================================
/* (Sort three integers) Write a program that sorts three 
integers. The integers are entered from the input dialogs and 
stored in variables num1, num2, and num3, respectively. 
The program sorts the numbers so that 
                num1 <= num2 <= num3
 */
        int num1, num2,num3;

        System.out.println("Enter three integers to be sorted: ");
        num1 = input.nextInt();
        num2 = input.nextInt();
        num3 = input.nextInt();

        // example 1 2 5
        if ( (num1 >= num2 && num1 >= num3) && num2 >= num3 )
            System.out.printf("Sorted numbers are %d %d %d", num3, num2, num1);
        else if ((num1 >= num2 && num1 >= num3) && num3 >= num2)
            System.out.printf("Sorted numbers are %d %d %d", num2, num3, num1);
        else if ( (num2 >= num1 && num2 >= num3) && num1 >= num3 )
            System.out.printf("Sorted numbers are %d %d %d", num3, num1, num2);
        else if ((num2 >= num1 && num2 >= num3) && num3 >= num1)
            System.out.printf("Sorted numbers are %d %d %d", num1, num3, num2);
        else if ( (num3 >= num2 && num3 >= num1) && num2 >= num1 )
            System.out.printf("Sorted numbers are %d %d %d", num1, num2, num3);
        else if ((num3 >= num2 && num3 >= num1) && num1 >= num2)
            System.out.printf("Sorted numbers are %d %d %d", num2, num1, num3);

    }

}   
于 2019-04-20T05:45:16.517 回答
0

这是我对这个编程任务的解决方案

package studies;
import java.util.Scanner;

public class SortIntegers {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println(" Enter 3 integers: ");
        int a = input.nextInt();
        int b = input.nextInt();
        int c = input.nextInt();

        // Sort the numbers 

        int  min, max, med;
        if( a > b ){
             if( a > c ){
              max = a;
              if( b > c ){
               med = b;
               min = c;
              }else{
               med = c;
               min = b;
              }
             }else{
              med = a;
              if( b > c ){
               max = b;
               min = c;
              }else{
               max = c;
               min = b;
              }
             }
            }else{
             if( b > c ){
              max = b;
              if( a > c ){
               med = a;
               min = c;
              }else{
               med = c;
               min = a;
              }
             }else{
              med = b;
              max = c;
              min = a;
             }
            }

        //Display results
        System.out.println("The sorted numbers are: " + min + med + max);


    }

}
于 2016-05-10T17:56:54.967 回答
-1

创建一个列表,使用 list.add(nubmer) 添加您的号码,最后使用
Collections.sort( list );

于 2013-10-23T05:41:43.787 回答
-1

导入 java.util.Scanner;

公共类 my_name {

public static void main(String[] args) {
    int a,b,c,l=0,s=0,m=0;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter your first number:");
    a= input.nextInt();
    System.out.println("Enter your second number:");
    b= input.nextInt();
    System.out.println("Enter your third number:");
    c= input.nextInt();
    if ((a>b)&&(a>c))
    l=a;
    if((b>a)&&(b>c))
    l=b;
    if((c>a)&&(c>b))
    l=c;
    if ((a<b)&&(a<c))
    s=a;
    if ((b<a)&&(b<c))
    s=b;
    if((c<a)&&(c<b))
    s=c;
    m=(a+b+c)-(l+s);
    System.out.printf("largest number:%d ",l);
    System.out.printf("smallest number:%d ",s);
    System.out.printf("middle number:%d ",m);
    System.out.printf("The ascending order is %d %d %d",s,m,l);
}
}
于 2018-07-22T12:56:15.830 回答