0

私はここで学校のためにこのプロジェクトに取り組んでいますが、この時点で本当に立ち往生しています。基本的に、テキストファイルを取得する必要があります。次に、配列リストにその中の情報を入力する必要があります。その後、カテゴリ、質問、および回答に使用できるように、正しくフォーマットする必要があります。私にはその方法がわかりません。以下は、それがさらに解決に役立つかどうかインストラクターが尋ねる内容です。

「この課題では、トリビア ゲームをシミュレートするアプリケーションを作成します。6 つの異なるカテゴリの質問と回答のセットを含むテキスト ファイルが与えられます。プログラムは、各カテゴリからランダムに質問を選択し、プレーヤー. スコアは各実行の最後に表示されます.

入力データ形式: 入力ファイルには、さまざまなカテゴリの質問と回答が含まれています。各カテゴリの最初の行は、カテゴリの名前を示します。この行の後には、多数の行のペアが続きます。ペアの最初の行は質問で、2 行目は対応する答えです。カテゴリは空白行で区切られます。技術要件:

 一般的な質問オブジェクトを表す TriviaQuestion というクラスを作成します。

 データを読み取った後、ArrayList 内に情報を格納します。

 入力/出力においてユーザー フレンドリーであること。ケースを無視します。可能であれば、部分的に正しい答えを受け入れてください。」

今私のコードが示すように、彼が指定した形式で情報を ArrayList に追加する方法に行き詰まっています。私は誰にも私の仕事をしてほしくありません。私はちょうど適切な方向に微調整する必要があります。各カテゴリに多くの配列リストが必要かどうかわかりません。必要な場合は、それらを別々のクラスにする必要がありますか? これは私の2学期にすぎないので、私はまだこれらのことにかなり困惑しています. オンラインやこのフォーラムには他にもジャベのトリビア ゲームがありますが、この方法で動作するものは見つかりません。とにかく、ここにコードとその後のテキストファイルがあります....

import java.io.File;
import java.util.ArrayList;


public class TriviaGame {

/**
 * I want to make several array lists and then use a random question for each         category. Then compare the user
 * answer to the real answer to see if they won. Keep a count of the correct answers. Ignore case. 
 */
//instance fields
private String player; // The player
private int points;        // Player's number of points
private String currentAnswer; // Current typed answer
private File gameFile = new File ("trivia.txt");


//constructors

public TriviaGame(String playerName)
{
    playerName = player;
    points = 0;
}


public TriviaGame(String player, int points, String currentAnswer,
        File gameFile, ArrayList<String> triviaQuestion) {
    super();
    this.player = player;
    this.points = points;
    this.currentAnswer = currentAnswer;
    this.gameFile = gameFile;
    }


//Getters and Setters
/**
 * @return the player
 */
public String getPlayer() {
    return player;
}


/**
 * @param player the player to set
 */
public void setPlayer(String player) {
    this.player = player;
}


/**
 * @return the points
 */
public int getPoints() {
    return points;
}


/**
 * @param points the points to set
 */
public void setPoints(int points) {
    this.points = points;
}


/**
 * @return the currentAnswer
 */
public String getCurrentAnswer() {
    return currentAnswer;
}


/**
 * @param currentAnswer the currentAnswer to set
 */
public void setCurrentAnswer(String currentAnswer) {
    this.currentAnswer = currentAnswer;
}


/**
 * @return the gameFile
 */
public File getGameFile() {
    return gameFile;
}


/**
 * @param gameFile the gameFile to set
 */
public void setGameFile(File gameFile) {
    this.gameFile = gameFile;
}


//To String Method

/* (non-Javadoc)
 * @see java.lang.Object#toString()
 */
@Override
public String toString() {
    return "TriviaGame [player=" + player + ", points=" + points
            + ", currentAnswer=" + currentAnswer + ", gameFile=" +     gameFile
            + ", getClass()=" + getClass() + ", hashCode()=" + hashCode()
            + ", toString()=" + super.toString() + "]";
}




}

続いてテスター……

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JOptionPane;



public class TriviaGamePlayer {

/**
 * @param args
 */
public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    
    File gameFile = new File ("trivia.txt");
    ArrayList<String> triviaQuestion = new ArrayList<String>();
    
    Scanner infile = new Scanner(gameFile);
    String line;
    

    while(infile.hasNext()){
        line = infile.nextLine();
        triviaQuestion = line.split();

}

}


}

最後に、それに付随するテキスト ファイルのいくつか.....

Arts & Literature
What are bongo drums traditionally held between for playing?
The knees
The Hugo Awards are given for the best literature in which genre?
Science fiction
What four-letter girl's name gave Jane Austen the title of a comic novel?
Emma
Andy Warhol was born in what US city?
Pittsburgh
Who wrote the novel "The Chocolate War"?
Robert Cormier
What surname for John in "The Importance of Being Earnest" did Oscar Wilde take from the seaside town he vacationed at?
Worthing

Geography
What is the modern day equivalent of Dacia?
Romania
What is the capital of Ontario?
Toronto
Which island boasts of being Napoleon's birthplace?
Corsica
What nationality is a Breton?
French
A person from North Carolina is properly known as a what?
North Carolinian
In which country would you find St. Basil's cathedral?
Russia
4

1 に答える 1

0

ArrayList または TriviaQuestion オブジェクトが必要です

List<TriviaQuestion> triviaQuestions = new ArrayList<TriviaQuestion>();

このような最も単純な形式で TriviaQuestion クラスを作成します

public class TriviaQuestion {
  String category;
  String question;
  String answer;
}

このように入力できます

public static void main(String[] args) throws IOException {
    File gameFile = new File("trivia.txt");
    List<TriviaQuestion> triviaQuestions = new ArrayList<TriviaQuestion>();
    Scanner infile = new Scanner(gameFile);
    String lastKnownCategory = "";

    while (infile.hasNextLine()) {
        String currentLine = infile.nextLine();

        if (!currentLine.isEmpty()) {
            TriviaQuestion currentQuestion = new TriviaQuestion();

            if (currentLine.endsWith("?")) {
                currentQuestion.category = lastKnownCategory;
                currentQuestion.question = currentLine;
                currentQuestion.answer = infile.nextLine();
            } else {
                currentQuestion.category = currentLine;
                currentQuestion.question = infile.nextLine();
                currentQuestion.answer = infile.nextLine();
                lastKnownCategory = currentLine;
            }
            triviaQuestions.add(currentQuestion);
        }
    }
}
于 2013-09-20T03:19:42.563 に答える