複数の行を Pig Latin に翻訳するメソッドを作成しました。予想される入力は次のようになります。
The cat jumped over the fox
私のコードは、Pig Latin に正しく翻訳され、適切な書式設定 (つまり、単語が区切られ、行が区切られている) でテキストを出力します。しかし、私はスキャナー クラスの 2 つのインスタンスを使用してこれを行います。2 つのインスタンスを削除する方法を誰か提案できますか?それらを1つに凝縮しますか?
ところで、他の提案をお気軽に提供してください。ただし、私はまだ学習中の初心者であることを覚えておいてください。
File file = new File("projectdata.txt");
try
{
Scanner scan1 = new Scanner(file);
while (scan1.hasNextLine())
{
Scanner scan2 = new Scanner(scan1.nextLine());
while (scan2.hasNext())
{
String s = scan2.next();
boolean moreThanOneSyllable = Syllable.hasMultipleSyllables(s);
char firstLetter = s.charAt(0);
String output = "";
if (!moreThanOneSyllable && "aeiou".indexOf(firstLetter) >= 0)
output = s + "hay" + " ";
else if (moreThanOneSyllable && "aeiou".indexOf(firstLetter) >= 0)
output = s + "way" + " ";
else
{
String restOfWord = s.substring(1);
output = restOfWord + firstLetter + "ay" + " ";
}
System.out.print(output);
}
System.out.println("");
scan2.close();
}
scan1.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
注: 数日前にコード オーバーフローに同様のものを投稿し、そこで得られた回答からいくつかのアドバイスを得ました。ただし、2 つのスキャナー クラスを使用しないことを推奨する人もいましたが、私は書式設定を正しく行うことができませんでした。