我是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");
}
答案 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