Scannerで入力を読み取る
System.inからユーザー入力を読み取ります
「Scannerで入力を読み取る」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。
キーボードからの読み取り
ユーザーが入力した内容を読み取るために、Javaではjava.utilパッケージのScannerクラスを使用できます。これを標準入力ストリームであるSystem.inに接続します。
Scannerを使うと、単語、行、数値を簡単に読み取れます。
Scannerの作成
System.inを渡してScannerを生成します。ここでの例では入力なしで実行できるよう固定文字列を使っていますが、同じメソッドをキーボード入力にも適用できます。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("Hello");
String word = scanner.next();
System.out.println(word);
scanner.close();
}
}単語の読み取り
next()は1つのトークン、つまり次の空白文字までのテキストを読み取ります。空白や改行によってトークンが区切られます。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("apple banana cherry");
System.out.println(scanner.next());
System.out.println(scanner.next());
scanner.close();
}
}行全体の読み取り
nextLine()は、空白を含めて行末までのすべてを読み取ります。複数の単語をまとめて扱いたい入力に使用します。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("John Smith");
String fullName = scanner.nextLine();
System.out.println("Name: " + fullName);
scanner.close();
}
}入力の残りを確認する
hasNext()は、さらにトークンがある間はtrueを返します。これにより、入力がなくなるまでループできます。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("red green blue");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}1行ずつ読み取る
hasNextLine()とnextLine()を組み合わせると、複数行の入力を1行ずつ処理できます。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("line one\nline two\nline three");
while (scanner.hasNextLine()) {
System.out.println("> " + scanner.nextLine());
}
scanner.close();
}
}実際のキーボード入力の例
実際のユーザー入力を受け取る場合は、以下の行を記述します。ローカル環境で試してみてください。プログラムは、入力してEnterキーを押すまでnextLineで待機します。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name);
scanner.close();
}
}Scannerを閉じる
close()を呼び出すと、リソースが解放されます。より適切な方法はtry-with-resourcesで、ブロックの終了時にScannerが自動的に閉じられます。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner("data here")) {
System.out.println(scanner.next());
}
}
}nextとnextLineの違い
重要な違いを覚えておきましょう。next()は空白文字で停止して1つのトークンを返します。一方、nextLine()は現在の行の残りをすべて取得します。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("first second third");
System.out.println(scanner.next());
System.out.println(scanner.nextLine());
scanner.close();
}
}カスタム区切り文字
useDelimiterを使うと、トークンを区切る文字を変更できます。ここでは、空白文字の代わりにカンマで値を区切ります。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("a,b,c");
scanner.useDelimiter(",");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}Scannerの基本
System.inに対してScannerを1つ作成し、単語にはnext、行全体にはnextLineを使い、hasNext系のメソッドでループし、最後に必ず閉じます。
確認テスト
Scannerの基本を確認しましょう。
まとめ
Scannerを使った入力の読み取りについて学びました。
new Scanner(System.in)で作成しますnext()は単語を、nextLine()は行全体を読み取りますhasNext()またはhasNextLine()でループしますclose()またはtry-with-resourcesで閉じますuseDelimiterでトークンの区切り文字を変更します
よくある質問
「Scannerで入力を読み取る」レッスンは無料ですか?
はい。「Scannerで入力を読み取る」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。
「Scannerで入力を読み取る」で何を学びますか?
System.inからユーザー入力を読み取ります ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Scannerで入力を読み取る」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Scannerで入力を読み取る
- 数値と行の読み取り
- ユーザー入力の検証
- BufferedReaderという選択肢