電子書籍の厳選無料作品が豊富!

JAVAの勉強をしているのですが、StringTokenizerの役割がよく分かりません。検索サイトを使って色々調べてみたのですが、「トークンを区切る」だとかよく分からない言葉が出てきて全く理解できません。以下はあるデータから項目を抽出するプログラムらしいのですが、参考としてこの例でStringTokenizerがどのような役割を果たしているのか教えて下さい。複雑で説明しにくければStringTokenizerそのものの説明でも十分です。よろしくお願いします。


BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String line="";
try {
int i=0;
while ((line = reader.readLine()) != null) {
int fcount=1;
StringTokenizer st = new StringTokenizer(line);
while (st.hasMoreTokens()) {
switch (fcount) {
case 2: //項目2:被説明変数Y
data[i][0]=Integer.parseInt(st.nextToken());
break;
case 4: //項目4:説明変数X
data[i][1]=Integer.parseInt(st.nextToken());
break;
default: // その他の項目
String dummy=st.nextToken();
break;
}
fcount++;
}
i++;
}
NofData=i;

A 回答 (3件)

> 「トークンを区切る」だとかよく分からない言葉が出てきて全く理解できません。



コンピュータ用語での「トークン (token)」の意味は「意味のある塊または単語」です。

たとえば Java で class や static などのキーワードがありますが、Javaのコンパイラはこの文字の塊の単位で読み込んで内容を解釈し、最終的にバイナリを作ります (塊は人間が解釈する上での単語であるとは限りません。たとえば計算の記号の += のようなものもコンパイラにとっては一つの単語であり処理単位です)。

で、 StringTokenizer ですが、読んで字のごとく、StringからTokenを抜きだすためのものです。区切り文字を特に指定しない場合は空白文字などが区切りになり、たとえば元が "abc def" という文字列だった場合は最初に "abc" が取り出され、次に "def" が取り出されます。区切り文字を指定した場合はその文字で区切られます。たとえば元が "abc def" で区切り文字に "be" を指定すると "a", "c d", "f" の順で取り出されます。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2006/02/11 18:57

StringTokenizerというのはAPIを見れば大体は分かると思うんですけど…



例えば、ファイルの中で
"ABC DEF GHI JKL"
という行をBufferedReader.readLine()で読み込んだとします。
そこに、StringTokenizerを用いると、この行の単語ごとに区切って読むことができるようになるのです。
だから、この行を"ABC""DEF""GHI""JKL"というように分解して考えられるのです。

StringTokenizerのhasMoreTokensメソッドは、次の単語が存在するかどうかという判定を返すメソッドで、nextTokenメソッドは、次の単語を返すメソッドです。

すみませんが、与えられたプログラムは何だかよくわかりません。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2006/02/11 18:58

APIに使用例がありますが・・・これで解りますか?


参考URLの使用例を見てください

参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/java …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!