2016-04-10 6 views
0

私は問題があることを知っています。コンパイラには、ゲームが実際にゲームでプレイされている場所の部分にエラーがあり、ゲームをプレイするというコメントがあります。私はqArrayの範囲はそれを使用するループの外にあると思うが、私はそれを使用している方法にする必要がある方法にintQuestionsメソッドからデータを取得する方法がわからない。または、質問配列をqArrayの@に置くべきですか?スコープ外のJAVAトリビアゲームの配列

希望の出力は、intQuestionsメソッドが呼び出され、forループで使用されている配列に渡されたデータが呼び出され、コメントにゲームが表示されます。私はqArrayの範囲が外にあることを理解していますが、どのように私はそれを使用している方法でゲームをプレイすると言う配列にデータを渡すだろうか?

public class TriviaGame { 

    public static void main(String args[]) throws IOException 
    { 

    // Constants 
    final int NUM_QUESTIONS = 10; 
    final int NUM_PLAYERS = 2; 


    // Variables 
    int playerTurn = 1; // The current player 
    int questionNum; // The current question number 
    int playerAnswer; // The player's chosen answer 
    int player1points = 0; // Player 1's points 
    int player2points = 0; // Player 2's points 


    // Create an array of Player objects for player #1 and player #2. 
    Player[] players = new Player[NUM_PLAYERS]; 

    for (int i = 0; i < NUM_PLAYERS; i++) 

    { 

     players[i] = new Player(i+1); 

    } 


    // Create an array to hold Question objects. 
    Question[] questions = new Question [NUM_QUESTIONS]; 


    // Initialize the array with data. 
    intQuestions(questions); 


    // Play the game. 
    for (int i = 0; i < NUM_QUESTIONS; i++) 

    { 
     // Display the question. 
     TriviaGame.displayQuestion(qArray[i], playerTurn); 


     // Get the player's answer. 
     players[playerTurn - 1].chooseAnswer(); 


     // See if the correct answer was chosen. 
     if (qArray[i].getCorrectAnswerNumber() == players[playerTurn - 1].getCurrentAnswer()) 

     { 

      players[playerTurn -1].incrementPoints(); 

     } 


     // See if the the player chose the wrong answer. 
     // do nothing 
     // Switch players for the next iteration. 

     if (playerTurn == 1) 

      playerTurn = 2; 

     else 

      playerTurn = 1; 

    } 

    // Show the game results. 
    showGameResults(players); 
} 

/** 

* The intQuestions method uses the contents of the trivia.txt file to 

* populate the qArray parameter with Question objects. 

*/ 

public static void intQuestions(Question qArray[]) throws IOException 
{ 

    // Open the trivia.txt file. 

    File file = new File("trivia.txt"); 

    Scanner inputFile = new Scanner(file); 


    // Populate the qArray with data from the file. 
    for (int i = 0; i < qArray.length; i++) 

    { 

    // Create a Question object in the array. 
    qArray[i] = new Question(); 


    // Get the question text from the file. 
    qArray[i].setQuestion(inputFile.nextLine()); 


    // Get the possible answers. 
    for (int j = 1; j <= 4; j++) 

    { 

     qArray[i].setPossibleAnswer(inputFile.nextLine(), j); 

    } 

    // Get the correct answer. 
    qArray[i].setCorrectAnswerNumber(Integer.parseInt(inputFile.nextLine())); 

} 
} 

答えて

1

あなたは、おそらくmain()方法でquestions代わりのqArrayを使用する必要があります。qArrayのみintQuestions()メソッド内で表示されます。パラメータquestionsを使用してintQuestions()メソッドを呼び出すと、メソッドに配列を渡して初期化を行います。 intQuestions()のメソッドの完了後、配列はいくつかの値で初期化されます。