新しいテキスト ファイルを作成しPrintWriter
、回答をテキスト ファイルに出力したいと考えています。ただし、コードはプログラムのループ内に埋め込まれているため、ループが再開されるたびに新しいテキスト ファイルが作成され、最後のテキスト ファイルが置き換えられます。ループが最初からやり直すたびにテキスト ファイルが再作成されないようにするには、どのようにコードを記述すればよいでしょうか。
これが私のコードです:
public class Wordler {
public static void main(String[] args) throws IOException{
//introduces the game
System.out.println("Wordler: Finding words within a word");
System.out.println(" ");
System.out.println("Directions:");
System.out.println("Create as many words as you can with the letters in the word given. Once you have written as many words as you can think of, type");
System.out.println("'x' and then hit the enter key to end the game round. Good luck!");
System.out.println("--------------------------------------------------------------------------------------------------------------------------");
runGame();
}
//method to run the game
public static void runGame() throws FileNotFoundException{
//array list of arrays that contains all the possible words
ArrayList<String> wholeList = new ArrayList<String>();
wholeList.add("vulnerability");
wholeList.add("calculate");
wholeList.add("virtual");
//PrintWriter and File
File results = new File("WordlerResults.txt");
PrintWriter output = new PrintWriter(results);
//list of words and their answers (as a sublist)
ArrayList<String> arr1 = new ArrayList<String>();
arr1.add("vulnerabiliy");
arr1.add("ability");
arr1.add("nearby");
arr1.add("lite");
arr1.add("near");
arr1.add("bare");
arr1.add("rule");
arr1.add("bury");
arr1.add("lair");
arr1.add("rile");
arr1.add("bear");
arr1.add("liberality");
arr1.add("virulently");
arr1.add("vulnerably");
arr1.add("inevitably");
arr1.add("tenurially");
arr1.add("inertially");
arr1.add("neutrally");
arr1.add("unlivable");
arr1.add("unitarily");
arr1.add("veniality");
arr1.add("reliantly");
arr1.add("brilliant");
arr1.add("urinative");
arr1.add("nailbiter");
arr1.add("illuviate");
arr1.add("unitively");
arr1.add("veritably");
arr1.add("trivially");
arr1.add("vibratile");
arr1.add("virtually");
// stopped at #20, www.wordplays.com/w/13810606276/vulnerability
List<String> arr1Sub = arr1.subList(1, 30);
ArrayList<String> arr2 = new ArrayList<String>();
arr2.add("calculate");
arr2.add("late");
arr2.add("call");
arr2.add("teal");
arr2.add("talc");
arr2.add("catcall");
arr2.add("tall");
arr2.add("cult");
arr2.add("lace");
arr2.add("tela");
arr2.add("acute");
arr2.add("lacteal");
arr2.add("callet");
arr2.add("acuate");
arr2.add("luteal");
arr2.add("actual");
arr2.add("cullet");
arr2.add("caecal");
arr2.add("alulae");
arr2.add("acetal");
arr2.add("alate");
arr2.add("caeca");
arr2.add("aceta");
arr2.add("eclat");
arr2.add("cecal");
arr2.add("lutea");
arr2.add("cella");
arr2.add("cleat");
arr2.add("tulle");
arr2.add("culet");
arr2.add("alula");
arr2.add("calla");
arr2.add("tale");
arr2.add("tace");
arr2.add("celt");
arr2.add("clue");
arr2.add("alec");
arr2.add("tell");
arr2.add("cull");
arr2.add("alae");
arr2.add("cate");
arr2.add("acta");
arr2.add("tule");
arr2.add("caca");
arr2.add("ceca");
arr2.add("tael");
arr2.add("latu");
arr2.add("lute");
arr2.add("caul");
arr2.add("cute");
arr2.add("luce");
arr2.add("cell");
arr2.add("tala");
List<String> arr2Sub = arr2.subList(1, 52);
ArrayList<String> arr3 = new ArrayList<String>();
arr3.add("virtual");
arr3.add("ritual");
arr3.add("vault");
arr3.add("virtu");
arr3.add("vital");
arr3.add("trial");
arr3.add("rival");
arr3.add("viral");
arr3.add("ultra");
arr3.add("urial");
arr3.add("trail");
arr3.add("aril");
arr3.add("vair");
arr3.add("tali");
arr3.add("virl");
arr3.add("lair");
arr3.add("rail");
arr3.add("airt");
arr3.add("vita");
arr3.add("lati");
arr3.add("vial");
arr3.add("alit");
arr3.add("tail");
arr3.add("lair");
arr3.add("rial");
arr3.add("vatu");
arr3.add("latu");
arr3.add("tirl");
arr3.add("ulva");
arr3.add("litu");
arr3.add("lira");
arr3.add("lari");
arr3.add("vail");
List<String> arr3Sub = arr3.subList(1, 32);
//input list
ArrayList<String> inputList = new ArrayList<String>();
Scanner input = new Scanner(System.in);
//to print the words for the game
int r = (int) (Math.random() * 2);
String word = wholeList.get(r);
System.out.println(word);
while (input.hasNextLine()){
String words = input.nextLine();
if (words.equalsIgnoreCase("x")){
break;
}
else{
inputList.add(words);
}
}
//check answers
ArrayList<String> validAnswers = new ArrayList<String>();
ArrayList<String> wrongAnswers = new ArrayList<String>();
ArrayList<String> notFound = new ArrayList<String>();
List<String> compare = new ArrayList<String>();
if (r == 0){
compare = arr1Sub;
}
else if (r == 1){
compare = arr2Sub;
}
else if(r == 2){
compare = arr3Sub;
}
else{
compare.add("error");
System.out.println(compare);
}
for (int i = 0; i < inputList.size(); i++){
if (compare.contains(inputList.get(i))){
validAnswers.add(inputList.get(i));
}
else if (!compare.contains(inputList.get(i))){
wrongAnswers.add(inputList.get(i));
}
else{
notFound.add(compare.get(i));
}
}
System.out.println("Valid Answers: " + validAnswers);
System.out.println("Wrong Answers: " + wrongAnswers);
output.println(wholeList.get(r));
output.println("Valid Answers: " + validAnswers);
output.println("Wrong Answers: " + wrongAnswers);
output.close();
System.out.println(" ");
System.out.println("Would you like to play again? (Y/N)");
String response = input.nextLine();
System.out.println(" ");
if (response.equalsIgnoreCase("y")){
repeatGame();
}
else if (response.equalsIgnoreCase("n")){
System.out.println(" ");
System.out.println("Thank you for playing!");
}
}
public static void repeatGame(){
try {
runGame();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}