第五章 
 〜基本編〜
 入力
 入力について
   やってまいりました。入力です。
  入力というのは、キーボードから値を入力することです。
  次にやる条件のやり方と一緒に使うことによって、より一層
  いいプログラムができると思うです。それに面白さが広まるです〜
  ここでは、タイトルにもあるようにまずは入力のやり方をやっていくです〜

  例  :キーボードから入力して、それを表示させる
  やり方:
  1 java.ioパッケージを使う
  2 例外がきたときに備える処理を書く
  3 BufferedReaderクラス、InputStreamReaderクラスを使う
  4 BufferedReaderクラスのreadLine()メソッドを使う

  プログラムにすると・・・
サンプルプログラム5_1
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
   10:
   11:
   12:
   13:
import java.io.*;

class Rei5_1{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new 
            BufferedReader(new InputStreamReader(System.in));

        System.out.println("キーボードから入力してEnterを押すです〜");
        String str = br.readLine();

        System.out.println("入力した文字列は:" + str);
    }
}

   1行目のimport java.io.*;でjava.ioパッケージを使えるようにしておく宣言です。
  パッケージというのは、同じような感じのクラスがたくさん集まったやつです。
  詳しくは、まだ触れないです。クラスという言葉がまたでてきちゃいましたが・・・
  クラスは、1つのまとまりみたいな物です。まとまりというのは、メソッドや変数が
  クラスの中に集まってるということです。
  class Rei5_1にはmainメソッドが入ってるって感じです。
  でも、これもまだ詳しくは触れないです。
  4行目のthrows IOExceptionというのは、例外を自動的に処理するです
  便利な物だと思ってほしいです。
   5、6行目はBufferedReaderクラスを使ってbrというオブジェクトを作ってるです〜
  考え方は大体、変数と一緒です〜
   9行目でやっと値を入力するメソッドが出てくるです。
  それがreadLine()メソッドです。
  このメソッドはBufferedReaderクラスの中にあるメソッドです。
  さっき言った、メソッドや変数がクラスの中に集まってるといったのは、
  これにあたるです。
  class Rei5_1にはmainメソッドが入ってるって言ったのと同じですね!
  このreadLine()メソッドを使って1行入力をする処理をしてるです。
  そして、ここでもう1つ新しくでてきてるクラスがあるです。
  それはStringクラスです。
  これは、文字列を入れておく変数だと思ってほしいです〜
  ぱっと見るとさっきのBufferedReaderクラスの宣言よりも
  ずっと変数っぽいですね!だからこんなこともできちゃいます。
  String name = "あいうえお";
  これだと、nameという変数(厳密にはオブジェクトと言うけど)に
   あいうえお が入ってくるです。
  まさに
  int a = 10
  のときと一緒ですね!(これまた実際は微妙に異なるところがあるけれど・・・)
  Stringは便利なので、いろんなところで使われるから覚えておくといいです〜

   せっかく値を入力できたんですから、やっぱりここはプログラム入門の恒例作業
  二つのデータ(数値)を入力して計算をやってみるです〜
  このプログラムには実行中、Enterキーを押してって表示されないですが、
  入力し終わったらEnterキーを押してほしいです。今後ともそうしてほしいです〜
  そうしないと先進まないです・・・

サンプルプログラム5_2
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
   10:
   11:
   12:
   13:
   14:
   15:
   16:
   17:
   18:
import java.io.*;

class Rei5_2{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new 
            BufferedReader(new InputStreamReader(System.in));

        System.out.print("1つめの値を入力:");
        String str1 = br.readLine();

        System.out.print("2つめの値を入力:");
        String str2 = br.readLine();
        
        str1 = str1 + str2;
        
        System.out.println("2つの値を足すと:" + str1 + "になるですね!");
    }
}

   ただこれだと結果が、変になってるかと思うです。
  例えば 1 と 2 を入力すると12になってしまうです・・・
  これは、文字列同士を足してるからです。
  だから他にも、325 と45 を足すと 32545 という結果がでてきてしまうです。
  実は、こういったことは、以前からやってたりするです〜
  それは、println()メソッドの中で文字列同士を足してるのと一緒です〜
   でも今回やりたかったのは 1 と 2 を入力したとき結果に 3 を出力するような
  プログラムを作ろうと思ってたはずです。
  そうするには、どうすればいいかというですと、
  次の改訂版プログラムをみてほしいです〜

サンプルプログラム5_3
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
   10:
   11:
   12:
   13:
   14:
   15:
   16:
   17:
   18:
   19:
   20:
   21:
import java.io.*;

class Rei5_3{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new 
            BufferedReader(new InputStreamReader(System.in));

        System.out.print("1つめの値を入力:");
        String str1 = br.readLine();

        System.out.print("2つめの値を入力:");
        String str2 = br.readLine();
        
        int num1 = Integer.parseInt(str1);
        int num2 = Integer.parseInt(str2);
        
        num1 = num1 + num2;
        
        System.out.println("2つの値を足すと:" + num1 + "になるですね!");
    }
}

   これで、正しい結果がでてきたはずです。
  そして今回また新しくでてきたのがあるです。それは・・・
  14、15行目にあるIntegerクラスのparseInt()メソッドです。
  またクラスかよって思わないでくださいです。
  Javaはクラスとは切っても切り離せない関係なのでめちゃくちゃ出てくるです〜。
  本題に戻って、このparseInt()の引数に、引数は
  ( と ) の中に入れる値だったですね!
  文字列を入れると(ここではstr1やstr2を)その文字列を整数にしてくれるです〜
  そして戻ってきた値(整数)をint型の変数に入れてあげるです。(num1とnum2)に
  最後に、整数同士を計算してあげれば、
  前回やった演算と一緒のなで正しい答えが入ってくるです〜


  今回のポイント
  @ import java.io.*; を宣言する
  A main()メソッドの右側に throws IOException を付け足す
  B BufferedReaderクラスを使う
  C 入力するときは、readLine()メソッドを使う
  D Stringクラスは、変数のように文字列を代入できる。
  E IntegerクラスのparseInt()メソッドは、引数に正しい文字列を入れると
   戻り値に整数値を返してくれる。



  注意:これより下はただの雑談です・・・
  テラオメのJava初体験のころ・・・(入力編)
    初めてこの入力という処理を勉強したときは正直言って、
   やる気が0になったです。でも0じゃ始まらないので、毎日あの長ったらしい
   Bufferede・・・を言ってたです〜
   B・U・F・Fってな感じで。そして毎日打ち込んでたです〜(覚えるまで)
   一番はまったことといえば、throws IOExceptionを
   書き忘れてたことがかなり多かったです。
   Bufferedは、詠唱しまくって覚えたんですが、
   その結果throws IOExceptionのことをすっかり忘れてしまい、かなりの確立で
   ミスがでてしまったです・・・
   import java.io.*;だけは、かならず書いてたです〜
   (C言語のときに、似ていたので)
   ここで挫折しないでがんばってほしいです〜。
   別にまったく見ないで打てなんてことはないので、
   Bufferede・・・を使うんだな〜ぐらいで
   作るたびに命令は、見てもかまわないですよ〜。
   それに見るのが普通だと思うです。
   なんか内容が前回とあまりかわらないですね・・・

  TOPに戻る     Java講座に戻る