2017-12-13 16 views
0

저는 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

'Question' 클래스 내에있는 것을 보여주세요. –

답변

0

당신은

public static void takeQuiz(Question[][] questions)이 방법은 [(두 차원 배열을 수락한다고이 줄, 실제로 Question[][] questions

1

귀하의 문제는 전화 자체에 자사의 인수를 공급하지 않고 방법 takeQuiz() 불렀다 ] [])를 호출합니다. 다른 한편, 귀하의 전화 - takeQuiz();은 그런 배열을 전달하지 않습니다.

이 배열을 초기화하여이 컴파일을 만들어 함수에 전달해야합니다. 즉 Question[][] questionArray = GenerateQuestionArray(); //you should write this method takeQuiz(questionArray);

여러분이 말씀 드린 것처럼 분명히 여러분은 Java를 처음 사용하기 때문에 지침과 정보를 읽고 그에 대한 정보를 읽으시기 바랍니다. 개체 초기화, 메서드 및 배열에 대한 자세한 내용은 여기에서 다룹니다.

1

메서드 호출에서 문제가있는 것처럼 보입니다. 메서드에서 takeQuiz(); 질문에 2 차원 배열을 사용하고 있지만 호출 시간에 매개 변수를 제공하지 않으므로 컴파일러는 메서드를 찾을 수 없습니다. 그게 문제입니다.

이렇게 사용하면 간단합니다. 이것을 실제 값으로 대체하십시오.

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

takeQuiz (질문);

이렇게하면됩니다.