Как зациклить этот оператор с 3 изменяющимися значениями в setText для 40 текстовых полей? - PullRequest
0 голосов
/ 28 октября 2018

Вот код, который я не сохранил в списке.Это дает то, что я хочу отобразить в разных текстовых полях, но я хочу, чтобы оно было короче, поэтому я хочу зациклить его.

// "answerStoration.retrieveDataChoices (i, TB)" - это функция из другого класса, которая возвращает массив;

quizAnswer1store.setText(answerStoration.retrieveDataChoices(1,TB).get(0));
            quizAnswer2store.setText(answerStoration.retrieveDataChoices(1,TB).get(1));
            quizAnswer3store.setText(answerStoration.retrieveDataChoices(1,TB).get(2));
            quizAnswer4store.setText(answerStoration.retrieveDataChoices(1,TB).get(3));
            quizAnswer1store2.setText(answerStoration.retrieveDataChoices(2,TB).get(0));
            quizAnswer2store2.setText(answerStoration.retrieveDataChoices(2,TB).get(1));
            quizAnswer3store2.setText(answerStoration.retrieveDataChoices(2,TB).get(2));
            quizAnswer4store2.setText(answerStoration.retrieveDataChoices(2,TB).get(3));
            quizAnswer1store3.setText(answerStoration.retrieveDataChoices(3,TB).get(0));
            quizAnswer2store3.setText(answerStoration.retrieveDataChoices(3,TB).get(1));
            quizAnswer3store3.setText(answerStoration.retrieveDataChoices(3,TB).get(2));
            quizAnswer4store3.setText(answerStoration.retrieveDataChoices(3,TB).get(3));

Я сохранил его в списке "quizAnswerSTORE" и попытался зациклить, но он не работает.

int k = 0;
for(int i = 0; i<quizAnswerSTORE.size(); i++){
       for(int j = 1; j < 11; j++){
           while(k<4){
              quizAnswerSTORE.get(i).setText(answerStoration.retrieveDataChoices(j,TB).get(k));
       }
    }
}

Ожидаемый результат состоит в том, чтобы отобразить разные значения из базы данных в разных 40txtfields.Поскольку каждый раз, когда значения цикла увеличиваются, он прокручивает мою базу данных с разными значениями.Переменная J представляет идентификатор в моей базе данных.И K - это индекс в значениях, взятых в arrayList, возвращаемом функцией retrieveDataAnswers из четырехколонной базы данных.

Вот, пожалуйста.Я надеюсь, что вы можете решить это.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Постарайтесь быть совместимыми с вашим отступом и выровняйте закрывающие скобки '}' с соответствующим оператором.

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

Я не уверен, что вы пытаетесь достичь (я мог бы использовать дополнительную информацию или пример выходных данных), но для начала вы можете исправить ошибку цикла, изменив цикл while на цикл for наподобие циклатак.

for (int i = 0; i < quizAnswerSTORE.size(); i++) {
    for (int j = 1; j < 11; j++) {
        for (int k = 0; k < 4; k++) {
            quizAnswerSTORE.get(i).setText(answerStoration.retrieveDataChoices(j,TB).get(k));
        }
    }
}

В качестве альтернативы, если вы хотите сохранить цикл while, вы можете сделать это так.

for (int i = 0; i < quizAnswerSTORE.size(); i++) {
    for (int j = 1; j < 11; j++) {
        int k = 0; // Set k inside the 2nd loop and it will reset to 0 after the while loop
        while(k < 4) {
            quizAnswerSTORE.get(i).setText(answerStoration.retrieveDataChoices(j,TB).get(k));
            k++; // Shorthand for k += 1 which is shorthand for k = k + 1
        }
    }
}
0 голосов
/ 28 октября 2018

Вы можете использовать mod для управления значениями maximun int, например, i % 10 не может принимать значения больше 10.

Пример:

public class Main {
    public static void main(String[] args) {
        int j = 1;
        int k = 0;


        for(int i = 0; i < 40; i++) {

            System.out.println("quizAnswerSTORE"+i+".setText(answerStoration.retrieveDataChoices("+j+",TB).get("+k+"));");
            k = (k + 1)%4;

            if( k == 0) {
                j = (j+1) % 11;
            }

        }

    }
}

вывод:

quizAnswerSTORE0.setText(answerStoration.retrieveDataChoices(1,TB).get(0));
quizAnswerSTORE1.setText(answerStoration.retrieveDataChoices(1,TB).get(1));
quizAnswerSTORE2.setText(answerStoration.retrieveDataChoices(1,TB).get(2));
quizAnswerSTORE3.setText(answerStoration.retrieveDataChoices(1,TB).get(3));
quizAnswerSTORE4.setText(answerStoration.retrieveDataChoices(2,TB).get(0));
quizAnswerSTORE5.setText(answerStoration.retrieveDataChoices(2,TB).get(1));
quizAnswerSTORE6.setText(answerStoration.retrieveDataChoices(2,TB).get(2));
quizAnswerSTORE7.setText(answerStoration.retrieveDataChoices(2,TB).get(3));
quizAnswerSTORE8.setText(answerStoration.retrieveDataChoices(3,TB).get(0));
quizAnswerSTORE9.setText(answerStoration.retrieveDataChoices(3,TB).get(1));
quizAnswerSTORE10.setText(answerStoration.retrieveDataChoices(3,TB).get(2));
quizAnswerSTORE11.setText(answerStoration.retrieveDataChoices(3,TB).get(3));
...
quizAnswerSTORE38.setText(answerStoration.retrieveDataChoices(10,TB).get(2));
quizAnswerSTORE39.setText(answerStoration.retrieveDataChoices(10,TB).get(3));
...