добавление значений из метода - PullRequest
0 голосов
/ 24 января 2012

У меня есть приложение с 8 вопросами с несколькими вариантами ответов, ответы на каждый вопрос хранятся в 2 переключателях.Первая радиокнопка имеет значение, называемое choice1Value, а вторая радиокнопка имеет значение, называемое choice2Value.Ответы сопоставляются в массивах choice1ValueArray[] и choice2ValueArray[].Однако метод +getTotalRisk() принимает значения только из последнего вопроса.Фактически, предполагается, что все значения из всех вопросов (в зависимости от того, какой переключатель был выбран) добавлены вместе.

private int getTotalRisk() {
        int totalRisk = choice1Value + choice2Value;
        return totalRisk;
    }

    public void submitButtonClicked() {

        if (infoIsValid()) {
            for (int i = 1; i < choice1Array.length; i++) {
                username = "Johnny";
                questionID = i;

                if (choice1Array[i].isSelected()) {
                    answer = choice1Array[i].getText();
                } else if (choice2Array[i].isSelected()) {
                    answer = choice2Array[i].getText();
                }

                QuizAnswer q = new QuizAnswer(username, questionID, answer);

                q.createQuizAnswer();

                if (choice1Array[i].isSelected()) {
                    choice1Value = choice1ValueArray[i];
                }
                else if (choice2Array[i].isSelected()) {
                    choice2Value = choice2ValueArray[i];
                }
                    System.out.println("Risk Value is " + getTotalRisk());

            }
            System.out.println("Your total risk value is " + getTotalRisk());
        }

    }

Вот мой вывод результата, когда кнопка отправкищелкнул.Вы можете видеть, что он показывает значение риска для каждого вопроса, но когда, наконец, в конце, он должен рассчитать все значения риска, но он все равно показывает 0 (Ваше общее значение риска равно 0).

connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '1', 'Above 45')
Connection is closed
Risk Value is 1
connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '2', 'Yes')
Connection is closed
Risk Value is 3
connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '3', 'Yes')
Connection is closed
Risk Value is 2
connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '4', 'Yes')
Connection is closed
Risk Value is 3
connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '5', 'No')
Connection is closed
Risk Value is 2
connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '6', 'No')
Connection is closed
Risk Value is 2
connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '7', 'Yes')
Connection is closed
Risk Value is 1
connection is jdbc:odbc:myHealthDatabase
DB Query: INSERT INTO QUIZANSWER (Username, QuestionID, Answer) VALUES ('Johnny', '8', 'Yes')
Connection is closed
Risk Value is 0
Your total risk value is 0

Ответы [ 2 ]

1 голос
/ 24 января 2012

массивы начинаются с нуля

for (int i = 1; i < rArray.length; i++)

должно быть

for (int i = 0; i < rArray.length; i++)
0 голосов
/ 24 января 2012

Вы не накапливаете результаты, как (я думаю) вы намерены, вы продолжаете перезаписывать answer, choice1Value и choice2Value каждый раз в цикле for.Вот почему вы получаете «значения из последнего вопроса».

Но трудно ответить на ваш вопрос более подробно, не зная больше.Как сказал Касабланка в комментариях, жизненно важная информация здесь отсутствует.Что ты пытаешься сделать?Что такое answer и как оно используется?Для чего нужны переменные g / v / r / fArray (кстати, вы должны дать им более подходящие имена)?Можете ли вы привести пример того, к чему должны добавляться ваши радиокнопки?

Редактировать после вашего комментария: я думаю вам нужно что-то подобное, чтобы сложить значения риска:

public int getTotalRisk() {
  if (!infoIsValid()) {
    return 0;
  }
  int totalRisk = 0;
  // assuming choice1Array.length == choice2Array.length...?
  for (int i = 0; i < choice1Array.length; i++) {
    if (choice1Array[i].isSelected()) {
      answer = choice1Array[i].getText();
    } else if (choice2Array[i].isSelected()) {
      answer = choice2Array[i].getText();
    } // is it possible for neither to be selected?
    QuizAnswer quizAnswer = new QuizAnswer("Johnny", i, answer);
    quizAnswer.createQuizAnswer(); // not sure what this line is meant to do
    if (choice1Array[i].isSelected()) {
      totalRisk += choice1ValueArray[i];
    } else if (choice2Array[i].isSelected()) {
      totalRisk += choice2ValueArray[i];
    } // if one is always selected, make it if/else, not if/else if
  }
  return totalRisk;
}

Я позволил себе предложить несколько изменений, не стесняйтесь их использовать или игнорировать ... Дело в том, что для получения общего риска вам нужно продолжать добавлять переменную (totalRisk) каждый раз через цикл for, так что он продолжает увеличиваться на значение выбора для каждого значения i (и я сделал цикл начальным с 0, то есть с первой позиции в массиве, как предположил ответ Питера; измените это обратно, если есть веская причина для начала цикла в 1, то есть во второй позиции в массиве).То, что вы делали, как упоминалось ранее, было перезаписывать «общее» значение каждый раз вокруг цикла, так что в конце вы получили то, что было значением из последнего цикла.

Я оставлю это дочтобы вы вписали этот метод в свой код, поскольку я не знаю, что делает метод createQuizAnswer(), но, надеюсь, вы поймете, что вы делали неправильно.В качестве последнего общего предложения вы, вероятно, должны прочитать о переменных областях, так как я думаю, что вы не всегда знаете, как их использовать.

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