プログラムの中で必要とされる変数の値は最初からプログラムの中に記述する方法、引数としてプログラムに渡す方法の他にキーボード入力で受け付けた数字をそのままプログラムに利用するという方法があります。
今回はキーボード入力でのプログラム記述についてわかりやすく説明します。
キーボード入力の基本
まずはキーボード入力がどのように出力されるのかをみてみましょう。
大文字と小文字を間違えないように記述しましょう。
基本コード
- import java . io . * ;
- class InputInt {
- public static void main ( String [ ] args ) throws IOException {
- BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ) ) ;
- System . out . println ( “A の値は=” ) ;
- String aInput = br . readLine ( ) ;
- int aInt = Integer . parseInt ( aInput ) ;
- System . out . println ( “B の値は=” ) ;
- String bInput = br . readLine ( ) ;
- int bInt = Integer . parseInt ( bInput ) ;
- int cInt = aInt + bInt ;
- System . out . println ( “A + B =” + cInt ) ;
- }
- }
こちらのコードを記述し実行すると…コマンドラインに
A の値は=
と出力されました。
=のあとに適当な数字69を入力してみます。そして Enter キーを押します。すると
B の値は=
と出力されました。今度は44を入力して Enter キーを押します。すると
A + B =113
とキーボード入力した数字の合計が出力されました。
このようにキーボードで入力した値をつかってプログラム処理をすることができます。
基本コードの解説
- import java . io . * ;
- class InputInt {
- public static void main ( String [ ] args )
- throws IOException {
- BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ) ) ;
- 1行目にimport java . io . * ; を記述する
- 2行目の class クラス名{ の前
- 4行目に throws IOException を記述
- BufferedReader の行はそのまま書く
import java . io . * ; というのは java があらかじめ用意しているパッケージです。
import は導入する「使いますよ」という宣言だと思ってください。
io というのは input と output の略です。つまり java が容易している入力と出力に関するパッケージを使用しますということを宣言しています。
* は全てのモノという意味でパッケージに入っているすべてのモノを使います。という宣言です。
throws IOException { 以降はそのまま記述してください。
- System . out . println ( “A の値は=” ) ;
- String aInput = br . readLine ( ) ;
- int aInt = Integer . parseInt ( aInput ) ;
- プロンプト(入力を促す)メッセージを表示
- キーボードから入力した結果を String 型の変数 aInput に代入
- String aInput = br . readLine ( ) ;
- String 型から int 型への型変換
- int aInt = Integer . parseInt ( aInput ) ;
「A の値は=」とユーザーに入力を促すメッセージを出力します。
キーボードに入力された値は整数や少数などの数字でもコンピューターはすべて文字列型として受け取ります。
String aInput = br . readLine ( ) ;
String aInput は文字列型の変数 aInput を宣言しています。
では br . readLine はどのような意味かというと、ユーザーが入力した値をそのまま受け取って代入するということです。
なのでそれを数字としてなんらかの演算で利用するためには型変換をおこなう必要があります。
int aInt = Integer . parseInt ( aInput ) ;
aInput で文字列型で受け取った変数を整数に変えて、 aInt という整数型の変数に代入するということです。
この型変換をおこなってはじめて、69という値を計算に使うことができるようになります。
型変換に関してはこちらを参考にしてください。
- System . out . println ( “B の値は=” ) ;
- String bInput = br . readLine ( ) ;
- int bInt = Integer . parseInt ( bInput ) ;
- int cInt = aInt + bInt ;
- System . out . println ( “A + B =” + cInt ) ;
- 同様にキーボードから入力した結果を bInput に代入
- aInt + bInt を計算して cInt に代入
- cInt の値を出力
- 数値以外を入れるとエラーになる
キーボードから繰り返して入力
さきほどのプログラムでは2つの値をキーボードから受け取って計算をおこないました。
もっとたくさんの値を使いたい場合はいちいち受け取って変換して受け取って変換して…と繰り返すのは面倒です。
そこで for 文を用いての処理について説明したいと思います。
for 文を用いたキーボード入力の例
- 5つの値を繰り返してキーボードから入力
- for 文の中で合計を計算し、変数 sum を表示
for 文に関してはこちらを参考にしてください。
▶プログラムコード
- import java . io . * ;
- class InputFor {
- public static void main ( String [ ] args )
- throws IOException {
- BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ) ) ;
- int sum = 0 ;
- for ( int i = 1 ; i < = 5 ; i ++ ) {
- System . out . println ( i + ” 番目の値は=” ) ;
- String strInput = br . readLine ( ) ;
- int forInput = Integer . parseInt ( strInput ) ;
- sum = sum + forInput ;
- }
- System . out . println ( “合計の値は” + sum ) ;
- }
- }
- import java . io . * ;
- class InputFor {
- public static void main ( String [ ] args )
- throws IOException {
- BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ) ) ;
この5行は同様に記述します。
- int sum = 0 ;
- for ( int i = 1 ; i < = 5 ; i ++ ) {
- System . out . println ( i + ” 番目の値は=” ) ;
sum という変数を宣言します。
ここで注意しなければならないのはこの sum という変数を宣言する場所、変数のスコープについてです。
このプログラムでは for 文の外側で変数 sum の宣言をしているので for 文が終わった後でも sum を使用することができます。
for 文で5回の入力をしてもらいます。i の始まりは1からで5以下なので1~5回まわるということです。
1~5回の繰り返しの都度「〇(i)番目の値は=」で入力を促します。
変数のスコープに関してはこちらを参考にしてください。
- String strInput = br . readLine ( ) ;
- int forInput = Integer . parseInt ( strInput ) ;
- sum = sum + forInput ;
- }
- System . out . println ( “合計の値は” + sum ) ;
- }
- }
キーボード入力で受け取った文字列型の値を整数型に型変換して forInput に代入します。
合計の値の変数 sum にどんどん蓄積していって、最後にすべての合計の値を出力します。
(さきほども説明しましたが、変数 sum の宣言を for 文の中に記述してしまうと最後の命令文で変数 sum は使用できなくなってしまいます。)
実行すると
1番目の値は=
が出力されました。適当な数字1を入力して Enter を押すと
2番目の値は=
が出力されます。
3番目の値は=
4番目の値は=
5番目の値は=
それぞれに適当な数字1,2,3,4,5を入力してみました。 Enter を押すと
合計の値は15
が出力されました。
配列とキーボード入力
- InputFor . java と同じ作業
- int 型の配列 input [ 5 ] に格納してから変数 sum を計算
- プログラムは長くなるが、一度すべての引数を格納するので引数を使用して様々な計算ができる
InputFor . java のプログラムではユーザーから入力してもらった5つの数字は合計の計算をし終わったら消えてしまいます。
ユーザーから入力してもらった値を保存しておいてどこかで利用したいという場合は配列を使用します。
今度はユーザーから入力してもらった値を input [ ] という配列に格納するプログラム InputArray . java について説明します。
合計を計算するときはこの input [ ] という配列にアクセスして中身を合計します。
InputFor . java との違いはユーザーから入力してもらった値を保存するか、しないかの違いです。
- import java . io . * ;
- class InputArray {
- public static void main ( String [ ] args ) throws IOException {
- BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ) ) ;
- int [ ] array = new int [ 5 ] ;
- for ( int i = 0 ; i < = 5 ; i ++ ) {
- System . out . println ( i + ” 番目の値は=” ) ;
- String strInput = br . readLine ( ) ;
- int arrayInput = Integer . parseInt ( strInput ) ;
- array [ i ] = arrayInput ;
- }
- int sum = 0 ;
- for ( int j = 0 ; j < array . length ; j ++ ) {
- sum = sum + array [ j ] ;
- }
- System . out . println ( “合計の値は” + sum ) ;
- }
- }
- int [ ] array = new int [ 5 ] ;
- for ( int i = 0 ; i < = 5 ; i ++ ) {
- System . out . println ( i + ” 番目の値は=” ) ;
- String strInput = br . readLine ( ) ;
- int arrayInput = Integer . parseInt ( strInput ) ;
int [ ] array = new int [ 5 ] ;
array という整数型の配列を宣言して5つの入れ物を用意します。
for 文と下の3行はさきほどの for 文のコードと同様です。
キーボードからの入力を受け付けて、文字列型を整数型にキャストします。
- array [ i ] = arrayInput ;
そして変換した整数を配列に格納するという作業です。
array [ i ] ➡ i が1のとき配列の1つめの arrayInput にキャストされた整数が代入されます。
for 文を回すたびに配列の中身 array [ i ] が増えていって、最終的には5つの値がすべてこの配列 array の中に入ります。
- }
- int sum = 0 ;
- for ( int j = 0 ; j < array . length ; j ++ ) {
- sum = sum + array [ j ] ;
- }
- System . out . println ( “合計の値は” + sum ) ;
- }
- }
合計の数字を格納する変数 sum を宣言して for 文で回します。
for 文の初期値は0で、何回まわすかは配列の要素数を取得してその数を決めます。
そしてsum = sum + array [ j ] でその中身の値を sum の中に代入していきます。
最後に合計の値を出力します。
まとめ
キーボード入力からの値をプログラムで扱うことができるようになると、計算の幅がぐっと広がっていきます。特に配列と組み合わせることによって、入力した値を他の計算に使用できるようになるなど、様々な場面での応用が効くようになります。