0Pricing
Java Academy · レッスン

数値と行の読み取り

nextInt、nextLineとその注意点を学びます

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

型付き数値の読み取り

Scannerでは、nextIntやnextDoubleなどのメソッドを使って数値を直接読み取れます。これらは次のトークンを対応するプリミティブ型に変換します。

整数の読み取り

nextInt()は次のトークンを読み取り、intとして返します。ここでは入力なしで実行できるよう固定文字列を使っています。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("25");
        int age = scanner.nextInt();
        System.out.println(age + 1);
        scanner.close();
    }
}

Doubleの読み取り

nextDouble()は浮動小数点数を読み取ります。その値を計算に使用できます。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("3.5");
        double radius = scanner.nextDouble();
        System.out.println(radius * 2);
        scanner.close();
    }
}

複数の数値の読み取り

数値を読み取るメソッドを複数回使うと、空白文字を読み飛ばしながらトークンを順番に取得できます。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("10 20 30");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        System.out.println(a + b + c);
        scanner.close();
    }
}

終わるまで合計する

hasNextInt()とnextInt()を組み合わせると、個数がわからない数値を読み取れます。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("5 15 25 35");
        int total = 0;
        while (scanner.hasNextInt()) {
            total += scanner.nextInt();
        }
        System.out.println(total);
        scanner.close();
    }
}

有名なnextLineの落とし穴

ここでは典型的な落とし穴を紹介します。nextInt()は数値を読み取りますが、改行文字をバッファーに残します。そのため、次のnextLine()は期待したテキストではなく、残った空の行を読み取ります。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42\nHello World");
        int n = scanner.nextInt();
        String line = scanner.nextLine();
        System.out.println("Number: " + n);
        System.out.println("Line: [" + line + "]");
        scanner.close();
    }
}

落とし穴の修正

残っている改行を消費してから実際の行入力を読み取るために、nextInt()の後で追加のnextLine()を呼び出します。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42\nHello World");
        int n = scanner.nextInt();
        scanner.nextLine();
        String line = scanner.nextLine();
        System.out.println("Number: " + n);
        System.out.println("Line: [" + line + "]");
        scanner.close();
    }
}

long型とboolean型の読み取り

Scannerには、nextLongやnextBooleanなども用意されています。それぞれ対応する型のトークンを1つ読み取ります。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("9000000000 true");
        long big = scanner.nextLong();
        boolean flag = scanner.nextBoolean();
        System.out.println(big);
        System.out.println(flag);
        scanner.close();
    }
}

型が一致しないとスローされる

次のトークンが有効な数値でない場合、nextIntはInputMismatchExceptionをスローします。不確かな場合は、まずhasNextIntで確認してください。

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("abc");
        try {
            scanner.nextInt();
        } catch (InputMismatchException e) {
            System.out.println("Not an integer!");
        }
        scanner.close();
    }
}

安全な数値の読み取り

堅牢なパターンでは、正しい型の値が利用できる場合だけ読み取り、それ以外の場合は不正なトークンを読み取って破棄します。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("x 7 y 9");
        int sum = 0;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                sum += scanner.nextInt();
            } else {
                scanner.next();
            }
        }
        System.out.println(sum);
        scanner.close();
    }
}

重要なポイント

数値にはnextIntとnextDoubleを使い、hasNext系のメソッドで確認してください。また、nextLineに切り替える前に、残った改行を消費することを忘れないでください。

確認問題

数値と行の読み取りに関する知識を確認しましょう。

まとめ

数値と行の読み取り方法を学びました。

  • nextInt、nextDouble、nextLongで型付きの数値を読み取る
  • 個数が不明な場合はhasNextIntとループを使う
  • 改行の落とし穴:nextIntの後で追加のnextLineを呼び出す
  • 不正なトークンはInputMismatchExceptionをスローする
  • 安全性を高めるため、hasNext系のメソッドで読み取りを確認する

よくある質問

「数値と行の読み取り」レッスンは無料ですか?

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

「数値と行の読み取り」で何を学びますか?

nextInt、nextLineとその注意点を学びます ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「数値と行の読み取り」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Scannerで入力を読み取る
  2. 数値と行の読み取り
  3. ユーザー入力の検証
  4. BufferedReaderという選択肢
← Java Academyに戻る