こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

StringTokenizerについて

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;

投稿日時 - 2006-02-10 17:46:39

QNo.1956996

困ってます

質問者が選んだベストアンサー

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

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

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

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

投稿日時 - 2006-02-11 04:21:18

お礼

ありがとうございます!

投稿日時 - 2006-02-11 18:57:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

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

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

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

すみませんが、与えられたプログラムは何だかよくわかりません。

投稿日時 - 2006-02-10 23:42:57

お礼

ありがとうございます!

投稿日時 - 2006-02-11 18:58:23

ANo.1

APIに使用例がありますが・・・これで解りますか?
参考URLの使用例を見てください

参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/StringTokenizer.html

投稿日時 - 2006-02-10 18:37:23

あなたにオススメの質問