使用数组

时间:2017-12-13 13:42:07

标签: java arrays class methods

我是Java的新手,刚开始我的第一个半严肃的任务。我确信我的大多数代码都在工作,唯一的问题是因为我一直在使用类似乎无法调用一个方法,该方法将数组用于我的主类。我想要调用的其他方法似乎都有效。我想知道是否有人对此有任何解释或简单的解决方案?

提前感谢您花时间研究,真的很感激!

import java.util.Scanner;

public class GeographyQuizMain 
{

    public static void main(String[] args) 
    {
        takeQuiz();
    }

    public static void takeQuiz(Question[][] questions)
    {

        int score = 0;
        RandomNumber randomQuestion = new RandomNumber();
        //user chooses catergory
        int cat = pickCatergory();
        //ask 10 questions
        for(int i = 0; i < 10;)
        {
            Scanner answerChoice = new Scanner(System.in);
            randomQuestion.dice();
            int q = (randomQuestion.dice() - 1);
            //checks to see if question as been asked before
            if (!questions[cat][q].beenAsked)
            {
                questions[cat][q].beenAsked = true; //changes question status to beenAsked
                System.out.println(questions[cat][q].promt);
                String answer = answerChoice.nextLine();
                System.out.println("\nYou picked: " + answer + "\nThe correct answer was: " + questions[cat][q].answer + "\n");

                if(answer.equals(questions[cat][q].answer))
                {
                    score++;
                }
                i++;
            }
        }
        System.out.println("That is the end of the quiz!\n"
                + "You got " + score + "/10");
    }

3 个答案:

答案 0 :(得分:1)

问题在于呼叫本身,

此行public static void takeQuiz(Question[][] questions)表示该方法将接受名为Question的对象的二维数组([] [])。 另一方面,您的通话 - takeQuiz();不会传递此类数据。

你应该初始化一个这样的数组来进行编译并将其传递给函数。即 Question[][] questionArray = GenerateQuestionArray(); //you should write this method takeQuiz(questionArray);

就像你说的那样,很明显你是Java的新手,我强烈建议你阅读课堂上提供给你的说明和信息。我敢打赌,对象初始化,方法和数组的细节都在那里。

答案 1 :(得分:1)

你的方法调用似乎问题在你的方法takeQuiz();正在为问题采用二维数组,但在调用时你没有提供该参数,因此,编译器无法找到该方法。 这就是问题所在。

试着像这样使用,这对你来说很简单。将其替换为您的实际值。

String [] [] questions = new String [3] [3];

takeQuiz(问题);

这将有效。

答案 2 :(得分:0)

您已调用方法takeQuiz()而未实际提供其参数Question[][] questions