0

最小数を計算するプログラムを書きました。しかし、プログラマーがそれをどのように行うかはわかりません。「IFステートメント」で実行しましたが、これは機能していますが、それが標準的なコーディング方法なのか一般的なコーディング方法なのかはわかりません。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner in = new Scanner(System.in);
    System.out.print("Enter three values: ");

    int num1 = in.nextInt();
    int num2 = in.nextInt();
    int num3 = in.nextInt();


    System.out.print(smallest(num1, num2, num3));

}

public static int smallest(int num1, int num2, int num3)
{
    if (num1 < num2 && num1 < num3){return num1;}
    else if (num2 < num1 && num2 < num3){return num2;}
    else return num3;
}
4

5 に答える 5

5

Math#minメソッドがあります。あなたはそれを使うことができます:

minimum = min(n1, min(n2, n3))
于 2013-07-06T18:10:27.063 に答える
0

別のアイデアは、すべての数値を保存するのではなく、最小のものだけを追跡することです。

int smallest = in.nextInt();

for (int i = 0; i < 2; i++) {  // take 2 more inputs
    int next = in.nextInt();
    if (next < smallest)
        smallest = next;
}

後で最小以外の入力にアクセスする必要がない場合は、このアプローチが最適です。

于 2013-07-06T18:55:19.863 に答える
0

配列 (またはリスト) の最小値を見つけるという、より一般的な問題を解決できます。最小の要素を見つけるだけでよいため、構造にとっては悪い考えです。sort()これを行うための本当に基本的なテクニックは、次のようなものです。

public int smallest(int[] array) {
    if(array.length == 0) throw new IllegalArgumentException();  
    int min = array[0];
    for(int i=1 ; i<array.length ; i++)
       if(array[i] < min)
          min = array[i];
    return min;
}

とにかく配列全体を処理する必要O(n)あるため、ソートされていない配列では最小限の複雑さがあります。

もちろん、これは、配列がすでに数値でいっぱいになっている一般的な場合にのみ最適です。ユーザーの入力から最小値のみを取得する必要がある場合は、配列全体を保存できないため、arshajii のアルゴリズムを使用してメモリを少し節約する必要があります。

于 2013-07-06T20:27:41.867 に答える
0

私はこれを行います:

public static int smallest(int... nums) {
    Arrays.sort(nums);
    return nums[0];
}

最小限のエレガントなコードであるだけでなく、varargsパラメーターを使用することで、任意の数の int を処理できます。

また、それを呼び出すコードを変更する必要はありません。

于 2013-07-06T20:42:14.780 に答える
-1

これを行う方法は、整数の配列を作成し、それをソートして最初の要素を取得することです。

何かのようなもの:

int[] input = new int[]{in.nextInt(), in.nextInt(), in.nextInt()};
Arrays.sort(input);
int min = input[0];

また、関数を作成したので、上記のアプローチの代わりに、それを次のように変えることができます。

public static int smallest(int... numbers) {
    if (numbers.length == 0) {
        throw new IllegalArgumentException("numbers: numbers.length == 0");
    }
    Arrays.sort(numbers);
    return numbers[0];
}

この例では、varargs を使用しています。つまり、必要な数の int を入れることができます。varargs 引数は、関数に入ると本質的に配列になるため、任意の配列のように操作できます。ただし、varargs が 0 になることもあるため、配列内の項目数を確認してください。

古いコードと同じ方法でコードを呼び出すことができます。

int smallest = smallest(5, 10, 15);戻り5ます。

于 2013-07-06T18:44:17.003 に答える