私は大学のグループ プロジェクト用に Pig Latin トランスレータを作成していました (実際にトランスレータを作成する必要はなく、文字列を好きなように操作するだけで、これを選択しました)。
私の翻訳者への入力はラテン語の祈りで、その最初の 2 行は次のとおりです。
credo in unum deum
patrem omnipotentem
次のコードでトランスレータを作成しました。
public static void pigLatinify(String fname) throws IOException
{
File file = new File("projectdata.txt");
try
{
Scanner scan1 = new Scanner(file);
while (scan1.hasNextLine())
{
Scanner scan2 = new Scanner(scan1.nextLine());
boolean test2;
while (test2 = scan2.hasNext())
{
String s = scan2.next();
char firstLetter = s.charAt(0);
if (firstLetter=='a' || firstLetter=='i' || firstLetter=='o' || firstLetter=='e' ||
firstLetter=='u' || firstLetter=='A' || firstLetter=='I' || firstLetter=='O' ||
firstLetter=='E' || firstLetter=='U')
{
String output = s + "hay" + " ";
System.out.print(output);
}
else
{
String restOfWord = s.substring(1);
String output = restOfWord + firstLetter + "ay" + " ";
System.out.print(output);
}
}
System.out.println("");
}
scan1.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
}
最初の 2 行は次のように出力され、祈り全体が適切に出力されます。
redocay inhay unumhay eumday
atrempay omnipotentemhay
ただし、真の豚ラテン語では、単音節の単語は同じままで、最後に「-hay」が追加されるため、「it」は「ithay」になり、「egg」は「egghay」になりますが、多音節の単語には「-way」が追加されますそのため、「アーチェリー」は「アーチェリーウェイ」になり、「エンディング」は「エンディングウェイ」になります。
Java (および私が使用しているスキャナー クラス) が単語が単音節かどうかを検出する方法はありますか?
この時点で、私は初心者のプログラマーに過ぎないことも指摘します。