質問: new StringTokenizer(line,","); //分割した文字を画面出力する while (token.hasMoreTokens()){ System.out.println(token.nextToken()); } System.out.println("----------"); } //終了処理 br.close(); }catch(IOException ex){ //例外発生時処理 ex.printStackTrace(); } } } ```
回答: ``` while((line = br.readLine()) != null){ //区切り文字","で分割する String[] ss = line.split(","); if( !ss[0].equals("東京") )continue; // 東京じゃなければ非表示 //分割した文字を画面出力する while (int n; n < ss.length(); n++){ System.out.println(ss[n]); } System.out.println("----------"); } ``` Tokenizerが使いづらそうだったのでsplitに。 コマンドライン引数から値を受け取るときは"東京"をargs[0]に置き換えればいいでしょう。 確認してないので動くかわかりませんが、こんな感じのイメージで動作すると思います。 StringTokenizerをつかった場合、String#equals()による比較と表示の二回使うと東京の次の値が表示されてしまうので、東京を保存する必要がある。 ``` while((line = br.readLine()) != null){ //区切り文字","で分割する token = new StringTokenizer(line,","); String header = token.nextToken(); // tokenをとっておく if( !header.equals("東京") )continue; // 東京じゃなければ非表示 System.out.println(header); // ヘッダ情報を表示 //分割した文字を画面出力する while ( token.hasMoreTokens() ){ System.out.println(token.nextToken()); } System.out.println("----------"); } ``` == でStringを比較すると、値ではなくオブジェクトの参照を比較してしまいます。注意してください。