0

私は、なぞなぞのテキスト ファイルを読み取り、それを 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 フィートでは、卵は何にも当たりませ
んマッチ棒
ラベルを読む
いいえ、彼らはキリンを持っています
ごみ箱

針、ジャガイモ、嵐、または真の恋人
半開きのとき

4

1 に答える 1