1. ホーム
  2. java

[解決済み] Javaで3つの数値を昇順に並べ替えることができない問題

2022-03-01 12:02:45

質問

現在、あるプログラムを作っているのですが、どうしても思い通りに動作させることができません。スキャナで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);
    }
}
}

もうひとつ、私が抱えている問題と同じ(あるいは似た)問題について、いくつかの質問をされているのを見かけましたが、回答は配列を使うことにこだわっています。私はこの問題で配列を使用することができません。

先に謝っておきます。

解決方法は?

メインメソッドで、あなたのメソッドを呼び出します。

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つの値をソートする最速の方法

そして、あなたのコードを見てみると、3つの数字を2回比較するだけでソートするのは不可能だと思うのですが。