私は、.txtファイルから単語を読み取ることを含む非常に巧妙な問題の課題に取り組んでいます。プログラムは、任意の.txtファイルの読み取りを許可する必要があります。プログラムは、処理する単語を予測できません。
次に、単語を取得して「Pig Latin」に対応させ、新しいファイルに書き込みます。この問題にはさらに多くの要件がありますが、1つを除いてすべての部分を解決しました...新しいファイルに印刷するときに、行間隔を維持できません。つまり、1行目に5ワードがあり、次にブレークがあり、2行目に3ワードとブレークがある場合、新しいファイルについても同じことが当てはまる必要があります。現在のところ、すべて機能しますが、変換されたすべての単語が次々にリストされます。
私はこれを学ぶことに興味があるので、あなたがあなたの答えで恥ずかしがり屋を演じることを望むならば、私は大丈夫です。私はこれに9時間参加しているので、「semi-coy」も評価されます:)ファイルIOアクションが発生しているコードの「while」ステートメントに細心の注意を払ってください。スキャナーからnextLine()コマンドを利用して、それから文字列を作成する必要があるかどうか疑問に思っています...次に、nextLine()文字列からサブ文字列を作成して、単語を1つずつ変換します。サブストリングは、分割またはトークン、あるいは他の何かである可能性があります-この部分については不明であり、トークンの試行により、コンパイラのエラー例外「java.util.NoSuchElementException」が発生します-分割コマンドの正しい呼び出しを理解していないようです。String a = scan.nextLine()のようなものを試しました。ここで、「scan」はスキャナー変数です。次に、String b = a.split()を試しました。とにかくここに私のコードがあり、私が欠けているものを理解できるかどうかを確認してください。
ここにコードがあります。Javaの神々に事前に感謝します。
import java.util.*;
import javax.swing.*;
import java.io.*;
import java.text.*;
public class PigLatinTranslator
{
static final String ay = "ay"; // "ay" is added to the end of every word in pig latin
public static void main(String [] args) throws IOException
{
File nonPiggedFile = new File(...);
String nonPiggedFileName = nonPiggedFile.getName();
Scanner scan = new Scanner(nonPiggedFile);
nonPiggedFileName = ...;
File pigLatinFile = new File(nonPiggedFileName + "-pigLatin.txt"); //references a file that may or may not exist yet
pigLatinFile.createNewFile();
FileWriter newPigLatinFile = new FileWriter(nonPiggedFileName + "-pigLatin.txt", true);
PrintWriter PrintToPLF = new PrintWriter(newPigLatinFile);
while (scan.hasNext())
{
boolean next;
while (next = scan.hasNext())
{
String nonPig = scan.next();
nonPig = nonPig.toLowerCase();
StringBuilder PigLatWord = new StringBuilder(nonPig);
PigLatWord.insert(nonPig.length(), nonPig.charAt(0) );
PigLatWord.insert(nonPig.length() + 1, ay);
PigLatWord.deleteCharAt(0);
String plw = PigLatWord.toString();
if (plw.contains("!") )
{
plw = plw.replace("!", "") + "!";
}
if (plw.contains(".") )
{
plw = plw.replace(".", "") + ".";
}
if (plw.contains("?") )
{
plw = plw.replace("?", "") + "?";
}
PrintToPLF.print(plw + " ");
}
PrintToPLF.close();
}
}
}