入力が整数かどうかをチェック

JavaBeginner
オンラインで実践に進む

はじめに

Java アプリケーションを開発する際、ユーザー入力を検証することは非常に重要なタスクです。この実験(Lab)では、与えられた入力が有効な整数であるかどうかをチェックするための 3 つの一般的な方法を説明します。

  1. Integer.parseInt() メソッドを使用する
  2. Scanner.hasNextInt() メソッドを使用する
  3. Character.isDigit() メソッドを使用する

各メソッドを段階的に実装し、その違いと使用事例を理解していきます。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 上級 レベルの実験の完了率は 17%です。学習者から 100% の好評価を得ています。

Java プロジェクトのセットアップ

整数検証メソッドを実装するために、新しい Java ファイルを作成しましょう。

  1. ターミナルを開き、/home/labex/project ディレクトリにいることを確認します。
pwd
  1. CheckInputInteger.java という名前の新しい Java ファイルを作成します。
touch CheckInputInteger.java
  1. お好みのテキストエディタでファイルを開き、基本的なクラス構造を追加します。
import java.util.Scanner;

public class CheckInputInteger {
    public static void main(String[] args) {
        // ここにメソッド呼び出しを追加します
    }
}
空の CheckInputInteger java ファイルのスクリーンショット

Integer.parseInt() を使用した整数検証の実装

Integer.parseInt() メソッドは、文字列を整数に変換しようとします。変換に失敗した場合、NumberFormatException をスローします。この動作を利用して、整数を検証できます。

  1. 次のメソッドを CheckInputInteger.java ファイルに追加します。
// CheckInputInteger クラス内にこのメソッドを追加します
public static void checkUsingParseInt(String input) {
    try {
        // 入力文字列を整数にパースしようとします
        Integer.parseInt(input);
        System.out.println(input + " is a valid integer");
    } catch (NumberFormatException e) {
        // パースに失敗した場合、入力は有効な整数ではありません
        System.out.println(input + " is not a valid integer");
    }
}
  1. この実装をテストするために、main メソッドを更新します。
// この実装をテストするために main メソッドを修正します
public static void main(String[] args) {
    // テストケース
    checkUsingParseInt("123");    // 有効な整数
    checkUsingParseInt("12.34");  // 整数ではありません
    checkUsingParseInt("abc");    // 整数ではありません
}
  1. ファイルは次のようになります。
import java.util.Scanner;

public class CheckInputInteger {
    // クラス内でメソッドを定義します
    public static void checkUsingParseInt(String input) {
        try {
            // 入力文字列を整数にパースしようとします
            Integer.parseInt(input);
            System.out.println(input + " is a valid integer");
        } catch (NumberFormatException e) {
            // パースに失敗した場合、入力は有効な整数ではありません
            System.out.println(input + " is not a valid integer");
        }
    }

    public static void main(String[] args) {
        // テストケース
        checkUsingParseInt("123");    // 有効な整数
        checkUsingParseInt("12.34");  // 整数ではありません
        checkUsingParseInt("abc");    // 整数ではありません
    }
}
  1. プログラムをコンパイルして実行します。
javac CheckInputInteger.java
java CheckInputInteger

次のような出力が表示されるはずです。

123 is a valid integer
12.34 is not a valid integer
abc is not a valid integer
整数検証結果を示す Java プログラムの出力

Scanner.hasNextInt() を使用した整数検証の実装

Scanner クラスは、入力の次のトークンが整数として解釈できるかどうかをチェックする hasNextInt() メソッドを提供します。このメソッドは、コンソールからユーザー入力を読み取る場合に特に役立ちます。

  1. CheckInputInteger.java ファイルの CheckInputInteger クラス内に、次のメソッドを追加します。
public static void checkUsingScanner(String input) {
    Scanner scanner = new Scanner(input);
    if (scanner.hasNextInt()) {
        System.out.println(input + " is a valid integer");
    } else {
        System.out.println(input + " is not a valid integer");
    }
    scanner.close();
}
  1. この実装のテストを含めるように、main メソッドを更新します。
public static void main(String[] args) {
    // 前のテストケース
    checkUsingParseInt("123");
    checkUsingParseInt("12.34");
    checkUsingParseInt("abc");

    // 新しいテストケース
    checkUsingScanner("456");     // 有効な整数
    checkUsingScanner("-789");    // 有効な整数
    checkUsingScanner("12.34");   // 整数ではありません
}
  1. プログラムをコンパイルして実行します。
javac CheckInputInteger.java
java CheckInputInteger

次のような出力が表示されるはずです。

456 is a valid integer
-789 is a valid integer
12.34 is not a valid integer

これは、Scanner.hasNextInt() メソッドが有効な整数と無効な整数を正しく識別することを示しています。

Scanner hasNextInt メソッドの出力

Character.isDigit() を使用した整数検証の実装

Character.isDigit() メソッドは、文字が数字であるかどうかをチェックします。このメソッドを使用して、入力文字列の各文字をチェックすることにより、整数を検証できます。

  1. CheckInputInteger.java ファイルに、次のメソッドを追加します。
public static void checkUsingIsDigit(String input) {
    boolean isValid = true;

    // 最初の文字をチェックして負の数を処理します
    int startIndex = (input.charAt(0) == '-') ? 1 : 0;

    // 各文字をチェックします
    for (int i = startIndex; i < input.length(); i++) {
        if (!Character.isDigit(input.charAt(i))) {
            isValid = false;
            break;
        }
    }

    if (isValid) {
        System.out.println(input + " is a valid integer");
    } else {
        System.out.println(input + " is not a valid integer");
    }
}
  1. 最終的なテストケースを使用して、main メソッドを更新します。
public static void main(String[] args) {
    // 前のテストケース
    checkUsingParseInt("123");
    checkUsingParseInt("12.34");
    checkUsingParseInt("abc");

    checkUsingScanner("456");
    checkUsingScanner("-789");
    checkUsingScanner("12.34");

    // 新しいテストケース
    checkUsingIsDigit("789");     // 有効な整数
    checkUsingIsDigit("-123");    // 有効な整数
    checkUsingIsDigit("12.34");   // 整数ではありません
}
  1. プログラムの最終バージョンをコンパイルして実行します。
javac CheckInputInteger.java
java CheckInputInteger

次のような出力が表示されるはずです。

789 is a valid integer
-123 is a valid integer
12.34 is not a valid integer
整数検証結果を示すプログラムの出力

まとめ

この実験(Lab)では、Java で整数入力を検証するための 3 つの異なる方法を探求しました。

  1. 例外処理が必要ですが、シンプルな Integer.parseInt() メソッド
  2. ユーザー入力を読み取るのに最適な Scanner.hasNextInt() メソッド
  3. 文字ごとの検証を提供する Character.isDigit() メソッド

各メソッドには、それぞれの利点とユースケースがあります。 parseInt() メソッドは、単純な文字列から整数への変換に適しており、Scanner.hasNextInt() はユーザー入力を読み取るのに優れており、Character.isDigit() は検証プロセスを最も細かく制御できます。

これらの検証手法は、ユーザー入力を安全かつ効果的に処理できる、堅牢な Java アプリケーションを開発するために不可欠です。