2017-03-17 2 views
1

Je réalise un jeu-questionnaire court dans lequel l'utilisateur entre ses réponses qui sont ensuite stockées dans un tableau qui est comparé à un tableau contenant les bonnes réponses. J'ai deux erreurs quand je tente de compiler le code:Erreur Java lors du passage de tableaux à partir d'autres méthodes

Impossible de trouver le symbole: le goudron variable et Vous ne trouvez pas le symbole: correctAnswers variables

Qu'est-ce que je fais mal? est-ce quelque chose à voir avec la portée variable? Je suis très nouveau au codage, toute aide serait appréciée. Code affiché ci-dessous:

package quizgame; 
import java.util.Arrays; 
import java.util.Scanner; 

class player { 

    Scanner Keyboard = new Scanner(System.in); 
    int playerResponse = 0; 
    int[] tar; 

    public int[] getAnswers(){ 
    System.out.println("Enter answers"); 
     int[] tar = new int [3]; 
      for (int i = 0; i < tar.length; i++) { 
       tar[i] = Keyboard.nextInt(); 
       } 
       return tar; 
      } 
    } 

class Quiz { 

    int playerScore; 
    static final int [] correctAnswers = {2,3,2}; 

    String[] questionOneAnswers = {"1: Pb", "2: Au", "3: Mg"}; 
    String[] questionTwoAnswers = {"1: Dollar", "2: Rubbee", "3: Cedi"}; 
    String[] questionThreeAnswers = {"1: 1886", "2: 1765", "3: 1775"}; 

    public void gameStart() { 
     System.out.println("Are you ready for a quiz?"); 
     System.out.println("Question 1: What is the symbol for gold?"); 
     System.out.println(Arrays.toString(questionOneAnswers)); 
     System.out.println("Question 2: What is the currency of Ghana?"); 
     System.out.println(Arrays.toString(questionTwoAnswers)); 
     System.out.println("Question 3: When did the American " 
      + "revolution start?"); 
     System.out.println(Arrays.toString(questionThreeAnswers)); 
    } 

    public int checkScore(int[] tar, int[]correctAnswers){ 
     for (int i = 0; i <tar.length-1; i++){ 
      if(tar[i] == correctAnswers[i]){ 
       playerScore ++; 
      } 
     } 
     return playerScore; 
    } 

    public void ShowScore() { 
     System.out.println("Your score is " + playerScore); 
    }  
} 


public class QuizGame { 
    public static void main(String[] args) { 
     Scanner Keyboard = new Scanner(System.in); 
     Quiz q = new Quiz(); 
     player p = new player(); 
     q.gameStart(); 
     p.getAnswers(); 
     q.checkScore(tar, correctAnswers); 
     q.ShowScore(); 
     } 
} 
+0

'tar' n'existe pas dans la principale ... – Li357

Répondre

0

Dans votre classe principale:

public class QuizGame { 
    public static void main(String[] args) { 
     Scanner Keyboard = new Scanner(System.in); 
     Quiz q = new Quiz(); 
     player p = new player(); 
     q.gameStart(); 
     p.getAnswers(); 
     q.checkScore(tar, correctAnswers); 
     q.ShowScore(); 
    } 
} 

Vous appelez q.checkScore(tar, correctAnswers); et ... qui est dans cette classe, il est défini ni tar ni correctAnswers pourquoi votre code ne peut pas compiler .. . peut-être que cela fonctionne:

public class QuizGame { 
    public static void main(String[] args) { 
     Scanner Keyboard = new Scanner(System.in); 
     Quiz q = new Quiz(); 
     player p = new player(); 
     q.gameStart(); 
     tar = p.getAnswers();//Assign the int[] returned by p.getAns 
     q.checkScore(tar, Quiz.correcAnswers); // get the static array correctAnswers and pass it as an argument of the method 
     q.ShowScore(); 
    } 
} 

Ou dans cette partie q.checkScore(tar, Quiz.correcAnswers); vous pouvez également créer une variable pour obtenir de correctAnswers:

int[] correctAnswers = Quiz.correctAnswers; 

puis la transmettent:

q.checkScore(tar, correcAnswers); 

Quoi qu'il en soit, votre problème est que dans la classe QuizGame il n'y a pas des variables tar ni correctAnswers et c'est pourquoi votre code ne peut pas compiler.

Ou le chemin le plus court:

public class QuizGame { 
    public static void main(String[] args) { 
     Scanner Keyboard = new Scanner(System.in); 
     Quiz q = new Quiz(); 
     player p = new player(); 
     q.gameStart(); 
     q.checkScore(p.getAnswers(), Quiz.correcAnswers); //Pass directly the arrays returned by the calls p.getAnswers() and Quiz.correcAnswers without assign that returns to variables 
     q.ShowScore(); 
    } 
} 
0

Change:

p.getAnswers(); 
    q.checkScore(tar, correctAnswers); 

Pour:

q.checkScore(p.getAnswers();, correctAnswers); 
+0

aussi' correctAnswers 'n'est pas défini – Dazak