-2

私は現在プログラムに取り組んでいますが、本来の動作をさせることができません。スキャナーを使用して 3 つの整数を入力し、数値を昇順に出力する必要があります。私は技術的にこれを機能させましたが、従わなければならない構造には従いませんでした。メイン メソッドには、宣言と入力があります。次に、並べ替えを行う 2 番目の方法を使用する必要があります。この新しいメソッド内に並べ替えを入れると、実際には数字をまったく並べ替えることができません。コンパイルして実行し、数値を入力するとプログラムが終了します。2 番目の方法がなければ、ほとんどの場合、正しく実行されます。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);
    }
}
}

もう1つ、周りを見回すと、これで私が抱えているのと同じ(または同様の)問題について人々が尋ねた質問がいくつか見られましたが、回答は配列の使用を主張しています。これには配列をまったく使用できません。

ありがとうございます。

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 つしかないため、6 つのうち 2 つが欠けています。残っているものを探してみてください。

于 2013-10-23T05:40:08.763 に答える
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

これが、このプログラミングタスクに対する私の解決策です

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 に答える
0

それらをリストに入れて並べ替えますCollections.sort()

于 2013-10-23T05:37:00.543 に答える
-1

list.add(nubmer) を使用して番号を追加し、最後に
Collections.sort( list );を使用してリストを作成します。

于 2013-10-23T05:41:43.787 に答える