Я думаю, что ваша проблема здесь, в состоянии вашего if
заявления:
if(formatString(positions[index].equalsIgnoreCase(formatString(position)))
Давайте немного расширим это:
final boolean equivalent = positions[index].equalsIgnoreCase(formatString(position));
final boolean condition = formatString(equivalent);
if (condition) {
// ...
}
Теперь position
- это String
, formatString
принимает и возвращает String
, positions[index]
- это String
, а equalsIgnoreCase
сравнивает String
с. Итак, первая строка в порядке.
Вторая строка, однако ... в развернутом виде ясно, что вы пытаетесь вызвать formatString
с boolean
. Мы знаем, что он должен принимать String
, так что это ошибка, о которой сообщается. Есть и другая проблема - formatString
возвращает a String
, но, поскольку вы используете его в качестве условия оператора if
, это должен быть boolean
.
Я думаю, что отказ от внешнего вызова на formatString
решит вашу проблему. Кроме того, троичный оператор внутри formatString
не нужен, так как "" .trim (). Equals (""). А так как вы используете equalsIgnoreCase
, toUpperCase
в formatString
также является избыточным, так почему бы просто не
if (positions[index].equalsIgnoreCase(position))
Обновление : formatString
изначально не было предоставлено. Этот ответ был переписан теперь, когда он был.