(文字入力)

プログラムを作ろうと思って、入力した文字を出力させようと思ったんですが、Javaの場合って実行中に入力させる行為って面倒みたいなんっすよ。で、とりあえずプログラム実行するときに、文字を入れて、それを出力する例をあげます。

ということでプログラムのソースを書くと・・・
class b2 {
 public static void main(String[] args) {

  String aaa , bbb ;

  aaa = args[0] ;
  bbb = args[1] ;

  System.out.println(" 1 : " + aaa ) ;
  System.out.println(" 2 : " + bbb ) ;
 }
}
(実行方法)
# javac b2.java
# java b2 111 222
1 : 111
2 : 222
これを見てピピッときた人も多いかもしれませんが、コマンドラインの引数はargs[]として使うのです。上の例でも分かると思いますが、1つ目のtestがargs[0]に入り、2つ目はargs[1]に入る。3つ目、4つ目は・・・って説明しなくていいっすよね?[]の中の数がポイント(笑)

では次にプログラム実行中に文字列を入力して、それを表示させる方法です。
import java.io.*;

class b1 {
 public static void main(String[] args) throws IOException {

  System.out.print("Input : ");

  BufferedReader bbb = new BufferedReader(new InputStreamReader(System.in));

  String aaa = bbb.readLine();
  System.out.println("Input Data is " + aaa );
 }
}
(実行方法)
# javac b1.java
# java b1
Input : cccccccc
Input Data is cccccccc
い、い、いきなり難しくなった・・・はっきり言ってなんじゃこりゃ〜!の世界ですが、1つ1つ説明します。まず、import java.io.*;ですが、java.ioのクラスをすべて取り込みますっていう宣言。クラスというのは、部品って意味らしくて、車とかでたとえると、タイヤ・ハンドル・エンジン・シートなどなどそれぞれが部品・・・つまりクラスってことです。ここではimport(インポートする)で、何をでjava.io.*で*が全てってことを意味します。本当は車のように部品(クラス)がいっぱいあるけど、全部書くのは大変なので*でまとめたって感じ。

では、次にthrows IOExceptionですが、入出力のときの例外の発生をシグナルを通知するってことらしいですけど、ようは入出力時のエラーのときや、なんかの割り込みが発生したらエラー処理をするってことらしく、いらね〜とか思ってもはずすとコンパイルできないんで付けてるって感じ。ここは分かったら詳しく説明したいっすね。今の俺じゃ詳しく分からん。

次はInputStreamReader(System.in)で標準入力データ(標準入力ってのはキーボードからの入力を意味することが多いっす)を読み込むのですが、こいつは文字データとしては認識されないので、文字として認識させるためにInputStreamReaderクラスで変換をかけてあげるんです。それをBufferedReaderクラスってやつでbbbというバッファに保存して、BufferedReaderクラスのeadLine()メソッドで1行分のデータを読み込みStringで指定したaaaに入れるんです。

まあ、いろいろ書いたけど、基本的に標準入力の仕掛けって同じようなもんらしいので、パターンとして覚えちゃうのがいいかもしれません(^^;)