![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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;
No.3ベストアンサー
- 回答日時:
> 「トークンを区切る」だとかよく分からない言葉が出てきて全く理解できません。
コンピュータ用語での「トークン (token)」の意味は「意味のある塊または単語」です。
たとえば Java で class や static などのキーワードがありますが、Javaのコンパイラはこの文字の塊の単位で読み込んで内容を解釈し、最終的にバイナリを作ります (塊は人間が解釈する上での単語であるとは限りません。たとえば計算の記号の += のようなものもコンパイラにとっては一つの単語であり処理単位です)。
で、 StringTokenizer ですが、読んで字のごとく、StringからTokenを抜きだすためのものです。区切り文字を特に指定しない場合は空白文字などが区切りになり、たとえば元が "abc def" という文字列だった場合は最初に "abc" が取り出され、次に "def" が取り出されます。区切り文字を指定した場合はその文字で区切られます。たとえば元が "abc def" で区切り文字に "be" を指定すると "a", "c d", "f" の順で取り出されます。
No.2
- 回答日時:
StringTokenizerというのはAPIを見れば大体は分かると思うんですけど…
例えば、ファイルの中で
"ABC DEF GHI JKL"
という行をBufferedReader.readLine()で読み込んだとします。
そこに、StringTokenizerを用いると、この行の単語ごとに区切って読むことができるようになるのです。
だから、この行を"ABC""DEF""GHI""JKL"というように分解して考えられるのです。
StringTokenizerのhasMoreTokensメソッドは、次の単語が存在するかどうかという判定を返すメソッドで、nextTokenメソッドは、次の単語を返すメソッドです。
すみませんが、与えられたプログラムは何だかよくわかりません。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
コマンドプロンプト実行後に画...
-
JSPで<SELECT>の中にDBから持っ...
-
ウィンドウを最前面にできません
-
onClickで関数呼出し後に、結果...
-
vbaエクセルマクロ RemoveDupli...
-
final修飾子を使っているのに、...
-
VBPをダブルクリックするとたま...
-
マスターページからコンテンツ...
-
【sendkeysメソッドが動かずに...
-
Refreshメソッドの使い方
-
DBを扱う上でのclose()メソッド...
-
StringTokenizerについて
-
エクセルVBAにおけるON TIMEメ...
-
途中でキーイベントが働かなく...
-
JNAで関数ポインタの表し方
-
配列のメソッド
-
Excel VBA でExcelを終了したい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
final修飾子を使っているのに、...
-
JSPで<SELECT>の中にDBから持っ...
-
Labelコントロールに数字を代入...
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
DataGridViewでセルクリックイ...
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
コマンドプロンプト実行後に画...
-
配列のメソッド
-
日本の教育って時間が無い中で...
-
Refreshメソッドの使い方
-
mainメソッドのthrows節で設定...
-
【sendkeysメソッドが動かずに...
-
C# 演算 最大値 最小値 表現の仕方
-
VBA コピーが出来ません…!
-
Application.Wait の参照設定
-
ウィンドウを最前面にできません
-
for文(拡張)内の変数(ローカ...
おすすめ情報