私は、なぞなぞのテキスト ファイルを読み取り、それを ArrayList に格納してから、なぞなぞへの回答のテキスト ファイルを読み取り、それを ArrayList に格納する単純ななぞなぞプログラムを作成しています。まあ、ここまではいい。私の問題は、ユーザーがなぞなぞの 1 つに答えるたびに、正しい答えにはポイントが与えられ、間違った答えには何も与えられないことです。私はそれをテストし、なぞなぞに正しく答えましたが、プログラムは代わりにそれが間違っていると言いました. ここで、いくつかの回答は正解として 1 つ以上を受け入れる必要があります。たとえば: Q: 目があっても見えないものは何ですか? A: じゃがいも、嵐、針。ユーザーが 3 ではなく 1 だけを考えていて、それが嵐だったとしましょう。プログラムに嵐を読んでもらいたいのですが、それはその答えに含まれているので、正しいです。これが私のコードです。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
/* Array of riddles with a separate array of answers */
class RiddlesProgram
{
public RiddlesProgram(){} //Empty constructor
public void riddleGame() throws FileNotFoundException
{
String ridFile = "Riddles.txt";
String ansFile = "Answers.txt";
Scanner ridReader = new Scanner(new File(ridFile));
Scanner ansReader = new Scanner(new File(ansFile));
/** ArrayLists for riddles and answers */
ArrayList<String> riddles = new ArrayList<String>();
ArrayList<String> answers = new ArrayList<String>();
/** Reading the Riddles & storing them in their array */
while(ridReader.hasNext())
{
riddles.add(ridReader.nextLine());
}ridReader.close();
/** Reading the Answers & storing them in their array */
while(ansReader.hasNext())
{
answers.add(ansReader.nextLine());
}ansReader.close();
Scanner in = new Scanner(System.in);
String answer = "";
System.out.println("Welcome to the Riddler!");
System.out.println("Let's start answering riddles..."); System.out.println();
System.out.println("Each riddle will require either a one word answer, or multiple word answer.");
System.out.println("Example: \nQ: How much would could a wood chuck, chuck?\n"
+ "A: As much wood as a wood chuck could chuck if a wood chuck would chuck wood.");
int count = 1;
int points = 0;
while(count!=16)
{
System.out.println("Riddle # " + count);
System.out.println(riddles.get(count));
System.out.println("\nAnswer? ");
answer = in.nextLine();
if(answers.contains(answer.toLowerCase()))
{
System.out.println("Correct! + 1 point.");
points += 1;
}//End if
else
{
System.out.println("Wrong! No points!");
}//End else
count++;
}//End while
}//End riddlegame
}//End class
なぞなぞのサンプル テキスト
私は羽よりも軽いですが、誰も私を長く抱きしめることはできません。私は何でしょう?
3 人の男がバーに駆け込み、4 番目の男が逃げます。なぜ彼はアヒルなのですか?
キリンを冷蔵庫に入れる方法は?
ゾウを冷蔵庫に入れる方法は?
すべての動物は、ライオン キングの会議に出席します。1匹の動物は現れません。来ない動物は?
あなたはアリゲーターが住む川にやって来ます。ボート、いかだ、橋、それらを作るための材料はありません。どのように通じますか?
15 フィートのロープが馬に結ばれています。馬は干し草の山から 25 フィート離れています。馬はどのようにして干し草にたどり着くことができますか?
半分を取って何も残さないのは何番ですか?
卵を割らずに3フィート落とす方法は?
たった一本の棒でどうやって火をつけるの?
チキンスープ缶とトマトスープ缶の見分け方は?
キリンは赤ちゃんを産むことができますか?
4 つの車輪とハエがあるのは?
食べさせれば生きて、何か飲み物をくれれば死ぬ。私は何でしょう?
目があっても見えないものは?
ドアがドアではないのはいつですか?
回答例
息
彼はバーにぶつかりたくなかっ
た ドアを開けて、彼を入れて、ドアを閉めて ドアを
開けて、キリンを連れ出して、彼を入れて、ドアを閉めて
ゾウ、彼は冷蔵庫の中にいる 飛び込ん
で、泳いで渡る、出る。アリゲーターはミーティングに参加してい
ます ロープは馬以外には何も結び付けられていません
8. 上半分を取り除き、「o」を残し
ます 4 フィート落とします。最初の 3 フィートでは、卵は何にも当たりませ
んマッチ棒
ラベルを読む
いいえ、彼らはキリンを持っています
ごみ箱
火
針、ジャガイモ、嵐、または真の恋人
半開きのとき