1. を使用してコンソールから読み取るSystem.in
前のレッスンでは、画面に情報を表示するためのコマンドについて学習しました。System.out
これを行うために、オブジェクトとそのprint()
メソッドを使用しましたprintln()
。シンプルで便利です。
しかし、すでにご想像のとおり、画面に情報を表示するだけでは十分ではありません。ほとんどのプログラムの目的は、ユーザーにとって役立つことを行うことです。つまり、ユーザーがキーボードからデータを入力できることが非常に多くの場合必要になります。
出力の場合と同様に、データ入力用の特別なオブジェクトもあります — System.in
。しかし、残念なことに、私たちにとって、それは私たちが望むほど便利ではありません。これにより、キーボードから一度に1 文字ずつデータを読み取ることができます。
System.in
これを改善するために、オブジェクトと組み合わせると必要なものすべてを提供する別のクラスを使用します。長い間、Java にはあらゆる場面に適したクラスが用意されてきました。そして、そのうちの 1 人について今から知りましょう。
2.Scanner
クラス
クラスScanner
(フルネーム: java.util.Scanner
) は、コンソール、ファイル、インターネットなどのさまざまなソースからデータを読み取ることができます。キーボードからデータを読み取らせたい場合は、System.in
データ ソースとして機能するオブジェクトを引数として渡す必要があります。そして、Scanner オブジェクトはそれをどう扱うかを判断します。
オブジェクトを使用してキーボードから読み取ると、Scanner
次のようになります。
コード | 説明 |
---|---|
|
オブジェクトを作成しますScanner 。キーボードからテキスト行を読み取ります。キーボードから 数字 を読み取ります。 |
簡単そうに見えますが、本当にそんなに簡単なのでしょうか?
たくさんの質問があると思いますが、ここでそれらに答えていきます。
その前に、このクラスを使用する完全なプログラムの例を示してみましょうScanner
。
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
3.Scanner
オブジェクトの作成
最初の質問は、この行は何ですかScanner console = new Scanner (System.in);
?
この行は混乱を招くかもしれませんが、同様のことが常に表示されます。したがって、ここで何が起こっているのかを説明することが重要であると考えています。
通常、テキストを含む変数を作成する方法を思い出してください。
String str = "text";
まず、変数の型 ( String
)、次にその名前 ( str
)、最後に等号の後に値を書き込みます。
私たちの当惑するセリフも実際には同じです。
Scanner console = new Scanner(System.in);
等号の左側にあるものはすべて、console
型が であるという名前の変数の宣言ですScanner
。s
代わりに、 またはscanner
または と呼ぶこともできますkeyboard
。その場合、コードは次のようになります。
Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();
そうすることですべてがより明確になると思います。
ただし、等号の右側のコードは少し複雑です。とはいえnew Scanner(System.in);
、ここでも超自然的なことは何も起こっていません。
このコードでは、Java マシンに次のように指示します。new
タイプが である新しいオブジェクト (キーワード)を作成し、そのオブジェクトを新しく作成されたオブジェクトのデータ ソースとしてScanner
渡します。System.in
Scanner
この行全体を実行すると、プログラムがキーボードからデータを読み取るために使用するScanner
名前の変数が作成されます。console
4. メソッド一覧
上の例では、Scanner
console
変数にオブジェクトへの参照が格納されていますScanner
。
変数によって参照されるオブジェクトのメソッドを呼び出すには、変数名の後にピリオドを記述し、その後にメソッド名と引数を続けます。コマンドの一般的な外観は次のとおりです。
variable.method(arguments);
例:
System.out.println("Hello");
System.out.println(1);
関数に引数を渡す予定がない場合は、空の括弧を記述するだけです。
variable.method();
例:
System.out.println();
5. コンソール入力
オブジェクトがあればScanner
、キーボードからデータを簡単に取得できます。
キーボードから行を読み取るには、次のコマンドが必要です。
String str = console.nextLine();
プログラムの実行がこの行に到達すると、プログラムは一時停止し、ユーザーがデータを入力して Enter キーを押すのを待ちます。その後、ユーザーが入力した内容はすべて変数に保存されますstr
。
キーボードから数値を読み取るには、次のコマンドが必要です。
int number = console.nextInt();
ここでのすべては前のコマンドと似ています。プログラムの実行がこの行に到達すると、プログラムは一時停止し、ユーザーがデータを入力して Enter キーを押すのを待ちます。その後、ユーザーが入力した内容はすべて数値に変換され、number
変数に保存されます。
ユーザーが整数に変換できないデータを入力した場合、プログラムはエラーを生成して終了します。
キーボードから小数を読み取るには、次のコマンドが必要です。
double number = console.nextDouble();
このステートメントはメソッドのステートメントとよく似ていますnextInt()
が、入力されたデータが数値に変換できるかどうかをチェックする点が異なりますdouble
。
キーボードから 2 つの数値を読み取り、その合計を画面に表示するプログラムの例:
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int a = console.nextInt();
int b = console.nextInt();
System.out.println(a + b);
}
}
ユーザーはスペースで区切って複数の数値を 1 行に入力できます。Scanner
クラスのメソッドはこれを処理する方法を知っています。ただし、プログラムは、ユーザーが を押した後にのみ数値を読み取りますEnter
。
6.Scanner
クラスのその他のメソッド
ちなみに、このScanner
クラスが提供するのは上記のメソッドだけではありません。メソッドの完全なリストは次のようになります。
方法 | 説明 |
---|---|
|
データを読み取り、データに変換します。byte |
|
データを読み取り、データに変換します。short |
|
データを読み取り、データに変換します。int |
|
データを読み取り、データに変換します。long |
|
データを読み取り、データに変換します。float |
|
データを読み取り、データに変換します。double |
|
データを読み取り、データに変換します。boolean |
|
1 つの「トークン」を読み取ります。トークンはスペースまたは Enter キーの押下で区切られます。 |
|
行全体を読み取ります |
また、入力内の次のトークンを実際にフェッチせずに (どのメソッドを使用して読み取るかを知るために) チェックできるメソッドもあります。
方法 | 説明 |
---|---|
|
あるのbyte ?入力を ? に変換できますかbyte ? |
|
あるのshort ?入力を ? に変換できますかshort ? |
|
あるのint ?入力を?に変換できますかint ? |
|
あるのlong ?入力を ? に変換できますかlong ? |
|
あるのfloat ?入力を ? に変換できますかfloat ? |
|
あるのdouble ?入力を ? に変換できますかdouble ? |
|
あるのboolean ?入力を ? に変換できますかboolean ? |
|
別のトークンはありますか? |
|
別の行はありますか? |
7. 文字列からのデータの読み取り
このクラスはさまざまなソースからデータを読み取ることができると前述しましたScanner
。それらのソースの 1 つはテキスト文字列です。
次のようになります。
String str = "text";
Scanner scanner = new Scanner(str);
オブジェクトを作成するときは、オブジェクトの代わりにScanner
文字列を渡します。そしてオブジェクトは文字列からデータを読み取ります。例:str
System.in
scanner
プログラムコード: | 説明: |
---|---|
|
// a == 10;
// b == 20;
画面出力は次のようになります。 |
GO TO FULL VERSION