Этот код генерирует пять столбцов с 6 дочерними элементами, но согласно этому коду он должен генерировать шесть столбцов. В чем проблема? - PullRequest
0 голосов
/ 15 июня 2019

Это код, который должен генерировать 6 столбцов, но вместо этого генерировать 5. Пожалуйста, укажите на любую логическую ошибку в коде, из-за которой желаемый вывод не может быть получен.

sem1Data= new String[18];
    sem2Data= new String[18];

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int stdA = 0, stdB = 0;
            int counter = 0;
            int colCounter = 1;

            LabName = editText.getText().toString();
            setLabRef = database.getReference("/" + LabName);
            String colName;


            for (int i = 0; i <6; i++) {
                colName = "col" + colCounter;
                //Toast.makeText(Activity1.this, colCounter, Toast.LENGTH_SHORT).show();
                if ( colCounter%2 == 0) {

                    for ( ; stdB<18; stdB++)
                    {

                        if(counter<6)
                        {
                            setLabRef.child(colName).child(String.valueOf(counter)).setValue(sem2Data[stdB]);
                            counter++;

                        }
                        else
                        {
                            counter=0;
                            colCounter++;
                            break;
                        }
                    }

                }
                else {
                    for ( ; stdA<18; stdA++)
                    {
                        if (counter<6){

                            setLabRef.child(colName).child(String.valueOf(counter)).setValue(sem1Data[stdA]);
                            counter++;
                        }
                        else {
                            counter=0;
                            colCounter++;
                            break;
                        }
                    }
                }
            }
        }
    });

Ожидаемый результат должен быть 6сгенерированные столбцы в firebase, но вместо этого генерируются только пять.

снимок экрана с firebase

Ответы [ 2 ]

0 голосов
/ 16 июня 2019

Я не уверен, какова цель вашего кода, но вот мое мнение, это может помочь вам разобраться.

если вы добавите строку Log.d(TAG, "Log track : stdB : " + stdB +" stdA : " +stdA); В начале вашего цикла for вы увидите, что значения stdA и stdB никогда не устанавливаются на ноль, а просто продолжают расти в соответствии с логикой вашего код, на самом деле оба конца со значениями:

Log track : stdB : 12 stdA : 18

Теперь, если вы посмотрите на случай, когда colCounter = 5 , i = 4 значение stdA is 12 , Это означает, что цикл for в секции else будет выполняться (colCounter mod 2 is not zero) только 6 раз и при этом не будет выполняться:

  else
      {
       counter=0;
       colCounter++;
         break;
        }

и тем самым вы пропускаете увеличение colCounter с 5 до 6.

0 голосов
/ 15 июня 2019

В первом цикле измените блок проверки на i <= 6 или i <7 </p>

для (int i = 0; i <= 6; i ++) </p>

UPD: если (счетчик <7) </p>

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