Как я могу сложить сумму этих баллов для окончательного значения? - PullRequest
0 голосов
/ 21 ноября 2011

Это мой первый блок кода, мой основной класс. У меня уже есть массив вопросов и созданные объекты, это просто, чтобы показать вам, ребята, что я пытаюсь сделать.

for(int i = 0; i<questionArray.length; i++)
{
  questionArray[i].askQuestion();
  questionArray[i].getAnswer();
  questionArray[i].checkAnswer();
}

Это мои методы, использованные в цикле выше:

public void askQuestion()
{
   System.out.println(question);
   System.out.println("This question is worth " + pointValue + " point(s)");
   System.out.println("Please enter your answer: ");
}

public String getAnswer()
{
    return answer;
}

public boolean checkAnswer()
{
  Scanner keyboard = new Scanner(System.in);
  String UserAnswer = keyboard.nextLine();
  if (UserAnswer.equalsIgnoreCase(answer))
  {
    System.out.println("congratulations you have earned " + pointValue + " point(s)\n");
    return true;
  }
  else 
  {
    System.out.println("sorry you did not get the answer correct");
    System.out.println("The correct answer is " + this.answer + "\n");
    return false;
  }
}

Итак, как вы можете видеть, это класс TriviaGame, 1.) Я пытаюсь сделать два метода, один из которых способен отображать pointValue (только когда пользователь answer == answer) после каждого вопроса. 2.) Второй добавляет все значения pointValue (опять же, когда ответы равны. A.k.a checkAnswer == true), когда пользователь получает правильный ответ, и отображает все результаты в конце.

Ответы [ 4 ]

2 голосов
/ 21 ноября 2011

Вы имели в виду:

 int score += pointValue; // note the plus (+)

Кроме того, рассмотрите возможность изменения if (checkAnswer() == true) на if (checkAnswer())

1 голос
/ 21 ноября 2011

Самый простой и простой способ сделать это - просто использовать экземпляр или статическую переменную для отслеживания этого.

1 голос
/ 21 ноября 2011

В вашем первом блоке кода, где вы запускаете каждый метод в цикле for, вы должны запустить questionArray[i].updateScore() вместо questionArray[i].checkAnswer().На данный момент вы используете checkAnswer(), который получает ответ от пользователя и проверяет, является ли он правильным.Но если после этого вы планируете вызывать updateScore(), я полагаю, что вы в конечном итоге снова выполните checkAnswer() в условии оператора if, и, таким образом, снова получите ответ от пользователя, не имея смысла.Запустив всего updateScore(), вы соберете ответ и обновите счет.Я не уверен, что ты уже знал это, но я подумал, что дам тебе знать на всякий случай.

Что касается вашего первоначального вопроса, вы можете попробовать это: Создайте логическую переменную экземпляра для вашего класса Question (инициализированный в false), который будет установлен в true, если их ответ был правильным.Таким образом, вы можете перебрать свой questionArray и просто проверить, был ли их ответ правильным или нет.Если на него был дан правильный ответ, то добавьте вопрос pointValue к общему количеству баллов.

Надеюсь, я понял ваш вопрос и надеюсь, что это поможет,
Тайлер

0 голосов
/ 21 ноября 2011

Вы хотите использовать переменную score для суммирования заработанных баллов? Затем вы должны сделать его атрибутом класса или объявить его как статический, инициализировать его 0 и, фактически, добавлять счет, полученный каждый раз, как уже сказал Богемян.

int score = pointValue;

а также

int score += pointValue; 

является локальным для вашего метода updateScore, и его значение будет потеряно при выходе из метода. Если вы объявите

static int score = 0;

Rgds,

Thomas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...