Java の Long 比較メソッド

JavaJavaBeginner
今すぐ練習

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

はじめに

Java の Long クラスには、2 つの long 型の値を数値的に比較する compare() メソッドが用意されています。このメソッドは、ある long 型の値が他の値より大きい、小さい、または等しいかを判断する必要がある場合に特に便利です。

この実験では、実際の例を通じて compare() メソッドの構文、パラメータ、および戻り値を調べます。この実験の終わりまでに、あなたは Java プログラムでこのメソッドを使いこなせるようになるでしょう。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/sorting("Sorting") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") subgraph Lab Skills java/operators -.-> lab-117868{{"Java の Long 比較メソッド"}} java/if_else -.-> lab-117868{{"Java の Long 比較メソッド"}} java/for_loop -.-> lab-117868{{"Java の Long 比較メソッド"}} java/arrays -.-> lab-117868{{"Java の Long 比較メソッド"}} java/arrays_methods -.-> lab-117868{{"Java の Long 比較メソッド"}} java/sorting -.-> lab-117868{{"Java の Long 比較メソッド"}} java/user_input -.-> lab-117868{{"Java の Long 比較メソッド"}} java/exceptions -.-> lab-117868{{"Java の Long 比較メソッド"}} java/math_methods -.-> lab-117868{{"Java の Long 比較メソッド"}} end

Long.compare() メソッドの理解

まずは、Long.compare() メソッドが何を行い、どのように動作するかを理解しましょう。

Long.compare() メソッドは、2 つの long 型の値を数値的に比較し、以下の値を返します。

  • 最初の値が 2 番目の値より小さい場合は負の値
  • 両方の値が等しい場合は 0
  • 最初の値が 2 番目の値より大きい場合は正の値

これは、数値を並べ替えたり、ソートアルゴリズムを実装したりする際に特に便利です。

このメソッドを実証するために、簡単な Java プログラムを作成しましょう。まず、新しい Java ファイルを作成する必要があります。

  1. WebIDE を開き、プロジェクトディレクトリに LongCompare.java という名前の新しいファイルを作成します。
  2. 以下のコードをファイルに追加します。
public class LongCompare {
    public static void main(String[] args){
        // Defining long values for comparison
        long value1 = 15L;
        long value2 = 25L;
        long value3 = 15L;

        // Compare value1 and value2
        int result1 = Long.compare(value1, value2);
        System.out.println("Comparing " + value1 + " and " + value2 + ": " + result1);

        // Compare value1 and value3
        int result2 = Long.compare(value1, value3);
        System.out.println("Comparing " + value1 + " and " + value3 + ": " + result2);

        // Compare value2 and value1
        int result3 = Long.compare(value2, value1);
        System.out.println("Comparing " + value2 + " and " + value1 + ": " + result3);

        // Explaining the results
        System.out.println("\nExplanation:");
        System.out.println("- A negative value means the first number is less than the second");
        System.out.println("- Zero means both numbers are equal");
        System.out.println("- A positive value means the first number is greater than the second");
    }
}

では、このプログラムをコンパイルして実行しましょう。

  1. WebIDE のターミナルを開きます。
  2. 以下のコマンドを実行します。
javac LongCompare.java && java LongCompare

以下の出力が表示されるはずです。

Comparing 15 and 25: -1
Comparing 15 and 15: 0
Comparing 25 and 15: 1

Explanation:
- A negative value means the first number is less than the second
- Zero means both numbers are equal
- A positive value means the first number is greater than the second

15 と 25 を比較するときにメソッドが -1 を返すこと(15 は 25 より小さいため)、15 と 15 を比較するときに 0 を返すこと(両者は等しいため)、25 と 15 を比較するときに 1 を返すこと(25 は 15 より大きいため)に注目してください。

条件文と一緒に Long.compare() を使用する

ここでは、Long.compare() メソッドの基本的な機能を理解したので、条件文と一緒に使用して、プログラム内で判断を行う方法を見てみましょう。

2 つの long 型の値を比較し、比較結果に基づいて適切なメッセージを表示する新しいプログラムを作成します。

  1. LongCompare.java ファイルを以下のコードで更新します。
public class LongCompare {
    public static void main(String[] args){
        // Defining two long values for comparison
        long number1 = 100L;
        long number2 = 50L;

        // Using Long.compare() with conditional statements
        int comparisonResult = Long.compare(number1, number2);

        if (comparisonResult > 0) {
            System.out.println(number1 + " is greater than " + number2);
        } else if (comparisonResult < 0) {
            System.out.println(number1 + " is less than " + number2);
        } else {
            System.out.println(number1 + " is equal to " + number2);
        }

        // Let's try with different values
        number1 = 30L;
        number2 = 30L;

        comparisonResult = Long.compare(number1, number2);

        if (comparisonResult > 0) {
            System.out.println(number1 + " is greater than " + number2);
        } else if (comparisonResult < 0) {
            System.out.println(number1 + " is less than " + number2);
        } else {
            System.out.println(number1 + " is equal to " + number2);
        }
    }
}

では、プログラムをコンパイルして実行しましょう。

javac LongCompare.java && java LongCompare

以下の出力が表示されるはずです。

100 is greater than 50
30 is equal to 30

この例では、Long.compare() の戻り値を使用して、2 つの long 型の値の関係を判断しています。

  • メソッドが正の値を返す場合、number1number2 より大きいことを意味します。
  • メソッドが負の値を返す場合、number1number2 より小さいことを意味します。
  • メソッドが 0 を返す場合、number1number2 と等しいことを意味します。

このパターンは、Java で値を比較し、比較結果に基づいて異なるアクションを実行する必要がある場合に一般的に使用されます。

長整数配列の要素を比較する

多くのプログラミングシナリオでは、配列内の要素を比較する必要があります。この目的には Long.compare() メソッドが非常に便利です。

2 つの長整数配列の対応する要素を比較するプログラムを書いてみましょう。

  1. LongCompare.java ファイルを以下のコードで更新します。
public class LongCompare {
    public static void main(String[] args){
        // Creating two arrays of long values
        long[] array1 = {10L, 20L, 30L, 40L, 50L};
        long[] array2 = {15L, 20L, 25L, 40L, 55L};

        System.out.println("Comparing elements of two arrays:");

        // Make sure both arrays have the same length
        if (array1.length != array2.length) {
            System.out.println("Arrays have different lengths and cannot be compared element by element.");
            return;
        }

        // Compare each element
        for (int i = 0; i < array1.length; i++) {
            int result = Long.compare(array1[i], array2[i]);

            System.out.print("Element at index " + i + ": ");

            if (result > 0) {
                System.out.println(array1[i] + " is greater than " + array2[i]);
            } else if (result < 0) {
                System.out.println(array1[i] + " is less than " + array2[i]);
            } else {
                System.out.println(array1[i] + " is equal to " + array2[i]);
            }
        }

        // Calculate how many elements are greater, less than, or equal
        int greaterCount = 0;
        int lessCount = 0;
        int equalCount = 0;

        for (int i = 0; i < array1.length; i++) {
            int result = Long.compare(array1[i], array2[i]);

            if (result > 0) {
                greaterCount++;
            } else if (result < 0) {
                lessCount++;
            } else {
                equalCount++;
            }
        }

        System.out.println("\nSummary:");
        System.out.println("- Number of elements where array1 > array2: " + greaterCount);
        System.out.println("- Number of elements where array1 < array2: " + lessCount);
        System.out.println("- Number of elements where array1 = array2: " + equalCount);
    }
}

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

javac LongCompare.java && java LongCompare

以下の出力が表示されるはずです。

Comparing elements of two arrays:
Element at index 0: 10 is less than 15
Element at index 1: 20 is equal to 20
Element at index 2: 30 is greater than 25
Element at index 3: 40 is equal to 40
Element at index 4: 50 is less than 55

Summary:
- Number of elements where array1 > array2: 1
- Number of elements where array1 < array2: 2
- Number of elements where array1 = array2: 2

この例では、array1 の各要素を同じインデックスの array2 の対応する要素と比較しています。for ループを使って配列を反復処理し、Long.compare() メソッドを使って要素を比較しています。

このアプローチは、データセット間の違いを見つける、時系列データを比較する、または 2 つの配列が同じ内容を持っているかどうかを確認するなど、多くのアプリケーションで非常に便利です。

Scanner を使った対話型プログラムの作成

では、ユーザーが 2 つの長整数値を入力し、それらを Long.compare() メソッドを使って比較する対話型プログラムを作成しましょう。

このために、ユーザーからの入力を読み取ることができる Scanner クラスを使用します。

  1. LongCompare.java ファイルを以下のコードで更新します。
import java.util.Scanner;

public class LongCompare {
    public static void main(String[] args) {
        // Create a Scanner object to read input from the user
        Scanner scanner = new Scanner(System.in);

        System.out.println("Welcome to the Long Compare Tool!");
        System.out.println("This program compares two long values that you enter.");
        System.out.println("----------------------------------------");

        // Prompt the user to enter the first number
        System.out.print("Enter the first long number: ");
        long firstNumber;

        // Use a try-catch block to handle invalid input
        try {
            firstNumber = scanner.nextLong();
        } catch (Exception e) {
            System.out.println("Invalid input. Please enter a valid long number.");
            return;
        }

        // Prompt the user to enter the second number
        System.out.print("Enter the second long number: ");
        long secondNumber;

        // Use a try-catch block to handle invalid input
        try {
            secondNumber = scanner.nextLong();
        } catch (Exception e) {
            System.out.println("Invalid input. Please enter a valid long number.");
            return;
        }

        // Compare the two numbers
        int result = Long.compare(firstNumber, secondNumber);

        // Display the result
        System.out.println("\nResult of comparing " + firstNumber + " and " + secondNumber + ":");

        if (result > 0) {
            System.out.println(firstNumber + " is greater than " + secondNumber);
        } else if (result < 0) {
            System.out.println(firstNumber + " is less than " + secondNumber);
        } else {
            System.out.println(firstNumber + " is equal to " + secondNumber);
        }

        // Close the Scanner to release resources
        scanner.close();
    }
}

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

javac LongCompare.java && java LongCompare

以下のような出力が表示されるはずです(結果は入力した値によって異なります)。

Welcome to the Long Compare Tool!
This program compares two long values that you enter.
----------------------------------------
Enter the first long number: 1500
Enter the second long number: 2000

Result of comparing 1500 and 2000:
1500 is less than 2000

異なる入力でプログラムを再度実行してみましょう。

javac LongCompare.java && java LongCompare

たとえば、5000 と 3000 を入力した場合:

Welcome to the Long Compare Tool!
This program compares two long values that you enter.
----------------------------------------
Enter the first long number: 5000
Enter the second long number: 3000

Result of comparing 5000 and 3000:
5000 is greater than 3000

この例では、Scanner クラスを使ってユーザーからの入力を読み取っています。また、ユーザーが無効な入力をした場合の潜在的なエラーを処理するために try-catch ブロックを使用しています。

Scanner.nextLong() メソッドはユーザーから長整数値を読み取り、その後 Long.compare() メソッドを使ってユーザーが入力した 2 つの値を比較します。

この対話型プログラムは、ユーザー入力が関与する実際のアプリケーションで Long.compare() メソッドをどのように使用できるかを示しています。

まとめ

この実験(Lab)では、Java の Long.compare() メソッドを探索しました。このメソッドは長整数値を数値的に比較するのに便利なツールです。以下のことを学びました。

  • Long.compare() メソッドの基本的な構文と戻り値
  • 比較結果に基づいて判断を下すために、このメソッドを条件文とともに使用する方法
  • このメソッドを配列内の要素の比較に適用する方法
  • ユーザー入力を伴ってこのメソッドを使用する対話型プログラムを作成する方法

Long.compare() メソッドは、ソートアルゴリズムや Comparable インターフェースの実装、あるいは長整数値の順序を決定する必要があるときに特に有用です。このメソッドを理解することは、比較や順序付けを伴うより高度な Java プログラミング技術の基礎を築きます。