前提・実現したいこと
javaで複数行からなるtextファイルを読み込み,カタカナ語(1文字目はァ~ヶでなる文字,二文字目以降は'ー'も考慮)を読みだして,登場するカタカナ語を重複なく表示したいです.
発生している問題・エラーメッセージ
実行はできましたが,重複が検出されず,そのままカタカナ文字がすべて表示されてしまいました.
該当のソースコード
while ((line = br.readLine()) != null){/* 行単位で処理 */ int len = line.length(); if (len <= 0) continue; int i=0; while (i < len){ char x = line.charAt(i); /* 1文字目がカタカナ語か否かを判定 */ if (x >='ァ' && x <= 'ヶ') { word[key]+=x; i++; x = line.charAt(i); /* 二文字目以降がカタカナ語もしくは'ー'か否かを判定 */ while(x >='ァ' && x <= 'ヶ'||x=='ー') { word[key]+=x; i++; x = line.charAt(i); } /* カタカナ文字の重複があるかを確認 */ for(int a=0;a<100;a++) { if(word[key].equals(word[a])) { dup=1; System.out.println("true"); if(key==a) { dup=0; } } } System.out.println(dup); if(dup!=1) { System.out.println(word[key]); } key++; } i++; dup=0; } }
試したこと
if (x >='ァ' && x <= 'ヶ') の最初にword[key]を表示するように組んだところ,各カタカナ文字の1文字目が表示され,while(x >='ァ' && x <= 'ヶ'||x=='ー')でword[key]を表示したところ,カタカナ文字の二文字目以降が表示されたのでword[key]の値は問題なく入っていると思います.
for(int a=0;a<100;a++) でword[a]の値も表示させたが問題なくすべて正常なカタカナ語が表示されました.
if(word[key].equals(word[a]))の最後でdupの値を表示させたところ,すべて0となってしまったので,if(key==a) dup=0; が毎回実行されているのだと思われます.
補足情報(FW/ツールのバージョンなど)
eclipseを使用.文字コードはUTF-8.
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。