したがって、次のような ArrayList
呼び出しがあります。originalList
[鍋、昼寝、鍋、座る、イッツ、ティス、スナップ]
次のような ArrayList
呼び出しもありますmodifiedList
[anps、anps、opst、ist、ist、ist、anps]
変更されたリストは元のリストを取得し、句読点を削除して並べ替えます。このプログラムの目的は、入力 ( originalList
) を受け取り、入力にアナグラムがあるかどうかを確認することです。アナグラムは、同じ文字で構成される単語です。アナグラムを出力するループで問題が発生しています。ループは次のとおりです。
for (int i=0; i<modifiedList.size();i++){
System.out.print(originalList.get(i));
for (int j=i+1;j<modifiedList.size();j++){
if (modifiedList.get(i).contentEquals(modifiedList.get(j))){
System.out.print(" "+ originalList.get(j));
originalList.remove(j);
modifiedList.remove(j);
}
}System.out.println();
}
ループを実行すると、次のようになります。
pans naps snap
pots
sit it's
tis
tis が sit のアナグラムとしてリストされていないことを除いて、すべて正しいです。これは、2 番目のループが tis に到達する前に終了する using の原因でありmodifiedList.remove(j)
、tis は sit and it's で出力されることはありません。出力で単語が繰り返されないように modifiedList.remove(j) が必要です。tisがsitのアナグラムとしてリストされ、それがそうであるように、これをどのように修正しますか?