0Pricing
Java Academy · レッスン

入力から数値を解析する

テキストを数値に変換します。

「入力から数値を解析する」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

行は常にString

readLine()は、ユーザーが42と入力した場合でも、常にStringを返します。計算を行うには、そのテキストを数値にパースする必要があります。

Javaには、この目的のためにInteger.parseIntやDouble.parseDoubleなどのヘルパーメソッドが用意されています。

Integer.parseInt

Integer.parseInt(String)は、"42"のようなテキストをint型の値42に変換します。

パースした後は、通常の数値と同じように加算、乗算、比較ができます。

String text = "42";
int n = Integer.parseInt(text);
System.out.println(n + 1);

実行可能なパース例

ハードコードされた文字列をパースして2倍にする、完全な実行可能プログラムを見てみましょう。

System.inから読み取らないため、すぐに実行でき、結果が表示されます。

public class Main {
    public static void main(String[] args) {
        String text = "21";
        int n = Integer.parseInt(text);
        System.out.println("Doubled: " + (n * 2));
    }
}

読み取ってからパースする

実際のパターンは、行を読み取ってからパースするというものです。このプログラムはコンソールから数値を1つ読み取り、その平方を表示します。

System.inで待機するため、ここでは自動実行できませんが、日常的によく使うパターンです。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        System.out.println("Square: " + (n * n));
    }
}

パースする前にtrimする

余分な空白があるとパースに失敗します。Integer.parseInt(" 42 ")はエラーをスローしますが、Integer.parseInt(" 42 ".trim())は正常に動作します。

パースする前に行に対してtrim()を呼び出すことを習慣にするとよいでしょう。

String raw = "  7  ";
int n = Integer.parseInt(raw.trim());
System.out.println(n);

小数をパースする

小数にはDouble.parseDoubleを使用します。"3.14"のようなテキストをdoubleに変換します。

intの範囲を超える非常に大きな整数には、Long.parseLongも使用できます。

public class Main {
    public static void main(String[] args) {
        double pi = Double.parseDouble("3.14");
        System.out.println(pi * 2);
    }
}

1行に複数の数値

多くの場合、"10 20 30"のように、1行に複数の数値が空白で区切られて含まれています。split(" ")を使用して、Stringのトークン配列に分割します。

その後、各トークンを個別にパースします。

String[] parts = "10 20 30".split(" ");
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[1]);
System.out.println(a + b);

分割した数値を合計する

この実行可能なプログラムは、行を分割し、ループ内ですべての数値を加算します。

入力なしで実行できるように文字列をハードコードしていますが、実際にコンソールを使う場合はbr.readLine()に置き換えてください。

public class Main {
    public static void main(String[] args) {
        String line = "5 8 2 10";
        String[] parts = line.split(" ");
        int sum = 0;
        for (String p : parts) {
            sum += Integer.parseInt(p);
        }
        System.out.println("Sum: " + sum);
    }
}

不正な入力では例外が発生する

テキストが"hello"や空の文字列のように有効な数値でない場合、parseIntはNumberFormatExceptionをスローします。

try/catchを使ってこれを防ぎ、不正な入力でプログラムがクラッシュしないようにできます。

try {
    int n = Integer.parseInt("hello");
} catch (NumberFormatException e) {
    System.out.println("Not a number!");
}

安全なパースの実例

クラッシュする代わりに不正な入力を適切に処理する、実行可能なプログラムを見てみましょう。

テキストを数値に変換できない場合、catchブロックが分かりやすいメッセージを表示します。

public class Main {
    public static void main(String[] args) {
        String input = "12x";
        try {
            int n = Integer.parseInt(input);
            System.out.println(n);
        } catch (NumberFormatException e) {
            System.out.println("Invalid number: " + input);
        }
    }
}

パースのチェックリスト

入力を数値に変換するとき:

  • 整数にはInteger.parseInt、小数にはDouble.parseDoubleを使います。
  • まずtrim()で余分な空白を取り除きます。
  • 1行に複数の数値がある場合はsplit(" ")を使います。
  • 安全のためtry/catchで囲みます。

クイックチェック

解析に失敗すると何が起こるか考えてみましょう。

まとめ

入力行は文字列であり、Integer.parseInt または Double.parseDouble で解析することを学びました。trim() と split(" ") を使い、安全のために NumberFormatException を捕捉しました。

次は、ストリームを正しく閉じる方法です。

よくある質問

「入力から数値を解析する」レッスンは無料ですか?

はい。「入力から数値を解析する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「入力から数値を解析する」で何を学びますか?

テキストを数値に変換します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「入力から数値を解析する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. BufferedReaderを使う理由
  2. 行の読み取り
  3. 入力から数値を解析する
  4. ストリームを安全に閉じる
← Java Academyに戻る