入出力についての重要な点は以下になります。
- キーボードから文字列を入力できる。
- 標準入力とはキーボードからの入力のことを指す。
- 数値を入力する際は型の変換が必要です。
- 文字列を連続して入力できます。
それでは、プログラミングの基本となる入出力について解説していきます。
入力と出力
キーボードからの入力
ここでは、ユーザがキーボードから入力した値を出力するコードを記述します。以下の構文を見てください。
<構文 キーボードからの入力>
public class クラス名 {
public static void main (String[] args) throws IOException {
・・・
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//入力した文字列をstr に読み込む
String str = reader.readLine();
・・・
}
}
コード中にある上記の文では、キーボードから文字列を読み込むためにBufferedReaderクラスのオブジェクト生成し、「reader」という変数に参照を代入しています。オブジェクトは、今の時点では特定の便利な機能を提供してくれるものだと思ってください。
BufferdReader reader = new BufferdReader(new InputStreamReader(System.in));
この構文のそれぞれの役割として、まず「BufferdReader」クラスを使うことによって、行単位でのデータの読み込みを可能になります。また、「InputStreamReader」は、文字ストリームを読み込むためのクラスです。
ストリームとは、ファイルの読み込みや書き出しにおけるデータの流れのことを言います。ここで使われている文字ストリームは、文字や文字列を読み書きするために使うストリームです。そして、「System.in」を使う事で、キーボードからの入力を可能にします。
図5-1 入力の流れ
ここでポイントとなるのは以下の部分です。
String str = reader.readLine();
readLine()メソッドはテキストを1行ずつ読み込むメソッドです。キーボードから文字列を入力し、Enterキーを押して入力完了するまで後続の処理を停止します、つまり、この文が処理されたとき、実行画面がユーザーからの入力を待つ状態で止まります。
文字列の入力を完了すると、入力値が変数strに代入されます。その際、入力値がString型にデータとして処理されるため、入力値を代入するための変数strの型がStringになっています。
それでは次のコードを記述していきましょう。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws IOException
{
System.out.println("文字列を入力してください");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();
System.out.println(str + "が入力されました。");
}
}
【実行結果】
文字列を入力してください
りゅうぐう ↲
りゅうぐうが入力されました。
はじめに、「文字列を入力してください」というメッセージがコンソール画面に出力されますので、コンソール上から「りゅうぐう」という文字列を打ち込み、Enterキーを押してください。すると、入力した「りゅうぐう」が出力されます。
System.out.println(str + "が入力されました。");
上記の文では、「str」と「”が入力されました。”」という2つの文字列を「+」でつなぐことで、2つの文字列が連結されて出力されます。
数値の入力
先ほどは、文字列を扱うコードを記述しました。次はユーザに数値を入力させるコードを記述します。数値を扱うコードを記述する際に、やらなければならない処理があります。それは、「入力された文字列を数値に変換する」という処理です。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws
IOException{
System.out.println("整数を入力してくださ
い。");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();
// 入力した文字列を数値に変換
int num = Integer.parseInt(str);
System.out.println(num + "が入力されました。");
}
}
【実行結果】
整数を入力してください
1 ↲
1が入力されました。
このサンプルで重要なコードは以下の部分です。
int num = Integer.parseInt(str);
ここでは、ユーザからの入力値(str)をint型の値に変換し、int型の変数numに代入しています。これはreadLine()メソッドが、入力値をすべて文字列として受け取るためです。そのため、入力値を数値として扱いたい場合には、「文字列型として扱われている入力値を数値型に変換する」という処理が必要になります。目的に応じてInteger.parseInt()を利用してください。
下記サンプルでは入力値をint型に変換した場合とそうでない場合の結果を比較しています。方が違えば処理の結果が変わる場合があることを確認しておいてください。
【数値と文字列の差異】
public static void main (String[] args) {
String str = “123”;
System.out.println(str + 4); //①1234
int num = Integer.parseInt(str);
System.out.println(num + 4); //②127
}
文字列から数値に変換するメソッドは、他にも種類があります。
表5-1 様々なメソッド
返還後の型 | メソッド |
int | Integer.parseInt |
byte | Byte.parseByte |
short | Short.parseShort |
long | Long.parseLong |
float | Float.parseFloat |
double | Double.parseDouble |
複数の文字列の入力
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws IOException
{
System.out.println("文字列を3つ入力してください。");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str1 = reader.readLine();
String str2 = reader.readLine();
String str3 = reader.readLine();
System.out.println(str1 + "が入力されました。");
System.out.println(str2 + "が入力されました。");
System.out.println(str3 + "が入力されました。");
}
}
【実行結果】
文字列を3つ入力してください。
1 ↲
a ↲
あ ↲
1が入力されました。
aが入力されました。
あが入力されました。
コメント