2016-04-10 17 views
0

Derleyicinin, oyunun gerçekte oyunda oynadığı bir yorum olduğu qArray bölümünde bir hata olduğunu söyleyen bir sorun olduğunu biliyorum. Ben qArray kapsamı kullanan döngü dışında olduğunu düşünüyorum ama ben kullanmakta olduğunuz şekilde olması gereken yere kadar intQuestions yönteminden veri almak emin değilim. Yoksa qArray'un @ olduğu soru dizisini mi koymalıyım?JAVA Trivia Game Kapsam dışı dizisi

İstenilen çıktı, intQuestions yönteminin çağrılması ve sonra da yorumun oyun oynadığı for döngüsünde kullanılan diziye geçirilmesidir! qArray'un kapsamının dışında olduğunu anlıyorum, ancak veriyi diziden, oyun oynadığı ve onu kullandığım yere kadar nasıl iletirim?

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())); 

} 
} 

cevap

1

Muhtemelen main() yöntemde questions yerine qArray kullanmalıdır: qArray sadece intQuestions() yöntemi içinde görülebilir. questions parametresiyle intQuestions() yöntemini çağırdığınızda, diziyi yönteme geçirirsiniz ve ona bazı başlatma yaparsınız. intQuestions() yöntemini tamamladıktan sonra questions diziniz bazı değerler ile başlatılacaktır.

İlgili konular