Сортировка массива объекта, затем setText, если еще - PullRequest
0 голосов
/ 12 декабря 2018

Я отсортировал массив с двойным значением

Arrays.sort(banding);

, затем я хочу установить текст с наибольшим значением, имеющим конкретное строковое значение "CUKUP".Если это не «CUKUP», тогда это должно быть «LEBIH», и я не хочу, чтобы в качестве выходных данных использовалось строковое значение «LEBIH»

        if (banding[6].getKetTotal().equals("CUKUP")) {
            untungtertinggi.setText(Double.toString(banding[6].harga));
        } else if (banding[6].getKetTotal().equals("LEBIH")) {
            if (banding[5].getKetTotal().equals("CUKUP")) {
                untungtertinggi.setText(Double.toString(banding[5].harga));
            }
        }else if (banding[5].getKetTotal().equals("LEBIH")) {
            if (banding[4].getKetTotal().equals("CUKUP")) {
                untungtertinggi.setText(Double.toString(banding[4].harga));
            }
        }else if (banding[4].getKetTotal().equals("LEBIH")) {
            if (banding[3].getKetTotal().equals("CUKUP")) {
                untungtertinggi.setText(Double.toString(banding[3].harga));
            }
        }else if (banding[3].getKetTotal().equals("LEBIH")) {
            if (banding[2].getKetTotal().equals("CUKUP")) {
                untungtertinggi.setText(Double.toString(banding[2].harga));
            }
        }else if (banding[2].getKetTotal().equals("LEBIH")) {
            if (banding[1].getKetTotal().equals("CUKUP")) {
                untungtertinggi.setText(Double.toString(banding[1].harga));
            }
        }else if (banding[1].getKetTotal().equals("LEBIH")) {
            if (banding[0].getKetTotal().equals("CUKUP")) {
                untungtertinggi.setText(Double.toString(banding[0].harga));
            }
        }

, это кодирование все равно неверно, потому что, когда все массивы имеют строковое значение »CUKUP "не выводит наибольшее двойное значение в качестве выхода

1 Ответ

0 голосов
/ 12 декабря 2018

Не ясно, что предполагается выводить, если проверки не пройдены, поэтому я предполагаю 0.0, но это можно отрегулировать.

Подход, если я следую логике ОП, может быть сведен к циклу, что уменьшает количество проверок.Конкретный тип объекта массива banding не был указан, поэтому я случайно использовал Banding в качестве типа объекта - это, вероятно, не совсем правильно.

ПРИМЕЧАНИЕ: предполагается, что массив правильноотсортировано.

Arrays.sort(banding);
setText(banding);

void setText(Banding[] banding) {
  final int loc = banding.length - 1;

  // if the highest is what we want, set and return
  if (banding[loc].getKekTotal().equals("CUKUP")) {
    untungtertinggi.setText(Double.toString(banding[loc].harga));
    return;
  }


  // we run until one before the start of the array, as we check for the 
  //   previous value; if we meet the criteria of [i] being LEBIH, and [i - 1]
  //   being CUKUP, then we set the value and return
  for (int i = loc; i > 0; --i) {
    if (banding[i].getKekTotal().equals("LEBIH") &&
         banding[i - 1].getKetTotal().equals("CUKUP")) {
      untungtertinggi.setText(Double.toString(banding[i - 1].harga));
      return;
    }
  }

  // no specific value found
  untuntertinggi.setText(Double.toString(0.0));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...