Java の Integer.compareUnsigned メソッド

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Integer クラスの compareUnsigned() メソッドは、2つの整数の符号なし値を比較して、どちらが大きいかを判断するために使用されます。両方の整数の符号なし値が等しい場合、このメソッドは0を返します。最初の整数の符号なし値が2番目の整数の符号なし値より大きい場合、1を返します。最初の整数の符号なし値が2番目の整数の符号なし値より小さい場合、-1を返します。

Javaクラスファイルを作成する

ターミナルで、Javaプロジェクト用の新しいディレクトリを作成します。たとえば:

mkdir project

プロジェクトディレクトリに移動します:

cd project

IntegerCompareUnsigned.java という名前の新しいJavaクラスファイルを作成します:

touch IntegerCompareUnsigned.java

コードを実装する

次のコードをコピーして貼り付けて、IntegerCompareUnsigned.java ファイルに保存します:

import java.lang.Integer;
import java.util.Scanner;

public class IntegerCompareUnsigned {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.print("Enter first and second number: ");

	// ユーザーからの入力を受け取る
        try {
            int n1 = sc.nextInt();
            int n2 = sc.nextInt();

	    // compareUnsigned() メソッドを呼び出す
            int r = Integer.compareUnsigned(n1, n2);

	    // 結果を調べる
            if(r > 0) {
                System.out.println("First number is greater");
            }
            else if(r < 0) {
                System.out.println("Second number is greater");
            }
            else {
                System.out.println("Both numbers are equal");
            }
        }
        catch(Exception e) {
            System.out.println("Invalid input!");
        }
    }
}

ファイルを保存して終了します。

このプログラムは、ユーザーから2つの整数を取得し、compareUnsigned() メソッドを使用してそれらの符号なし値を比較します。その後、最初の数が2番目の数より大きいか、2番目の数が最初の数より大きいか、または両数が等しいかを表示します。

プログラムをコンパイルして実行する

次のコマンドを使用してプログラムをコンパイルします:

javac IntegerCompareUnsigned.java

次のコマンドを使用してプログラムを実行します:

java IntegerCompareUnsigned

次のプロンプトが表示されるはずです:

Enter first and second number:

2147483647より大きい数と2147483647以下の数を2つ入力します。これは、Javaの int データ型は符号付き32ビット値のみを保持できるためです(-2147483648から2147483647まで)。2147483647より大きい数を入力すると、エラーメッセージが表示されます。

プログラムが実行され、次の出力が表示されるはずです:

First number is greater

さまざまな値でプログラムをテストする

さまざまな値を使ってプログラムをテストし、出力結果を見ることができます。

次の入力値でプログラムを実行してみてください:

Enter first and second number: -10 20
Enter first and second number: 500000000 -200000000
Enter first and second number: 0 0

プログラムを修正する

実行時にユーザーから入力を読み取るのではなく、コマンドライン引数として2つの整数を受け取るようにプログラムを修正します。

次のコードをコピーして貼り付けて、IntegerCompareUnsigned.java ファイルに保存します:

import java.lang.Integer;

public class IntegerCompareUnsigned {

    public static void main(String[] args) {

	// 正しい数の引数が提供されているかどうかを確認する
        if(args.length!= 2) {
            System.out.println("Please provide two integer arguments!");
            return;
        }

	// 引数を整数に変換する
        int n1 = Integer.parseInt(args[0]);
        int n2 = Integer.parseInt(args[1]);

	// compareUnsigned() メソッドを呼び出す
        int r = Integer.compareUnsigned(n1, n2);

	// 結果を調べる
        if(r > 0) {
            System.out.println(n1 + " is greater than " + n2);
        }
        else if(r < 0) {
            System.out.println(n2 + " is greater than " + n1);
        }
        else {
            System.out.println(n1 + " and " + n2 + " are equal");
        }
    }
}

ファイルを保存して終了します。

修正後のプログラムをコンパイルして実行する

次のコマンドを使用して修正後のプログラムをコンパイルします:

javac IntegerCompareUnsigned.java

次のコマンドを使用して修正後のプログラムを実行します:

java IntegerCompareUnsigned 3000000000 200000000

次の出力が表示されるはずです:

3000000000 is greater than 200000000

さまざまな入力値でプログラムをテストするようにプログラムを修正します。

まとめ

この実験では、2つの整数の符号なし値を比較してどちらが大きいかを調べるために、Integer クラスの compareUnsigned() メソッドをどのように使用するかを学びました。また、実行時にユーザーから入力を読み取るのではなく、コマンドライン引数として2つの整数を受け取るようにプログラムを修正する方法も学びました。