Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Red Planet
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263
1

Казалось бы, эквивалентные if, но один работает, а второй нет

21.06.2011, 17:38. Просмотров 1230. Ответов 1
Метки нет (Все метки)

Добрый день! Пишу свое посимвольное сравнение (условия задачи не позволяют equalsIgnoreCase применять). Проблема в том, что при сравнении игнорируется последний символ введенной строки (этот способ закомментирован), в незакомментированном все работает.

Например.
Введенная строка: And
Имена: Andrey, Anton
В список совпадающих вносится: Andrey.
Anton не вносится, так как третья буква t, а не d. Так и должно быть.

В неработающем if последняя буква введенной строки игнорируется.
Например.
Введенная строка: Anw
Имена: Andrey, Anton
В список совпадающих вносится: Andrey, Anton.

Код (неработающий if помечен красным, а работающий зеленым).
ArrayList<String> listOfEqs = new ArrayList<String>();
for (String t: listOfNames) {
int endOfStr = Math.min(etIn.getText().toString().length(), t.length());
int cntOfEqSimbs = 0;
for (int i=0; i<endOfStr; ++i) {
if (t.substring(i, i+1).equalsIgnoreCase(etIn.getText().toString().substring(i, i+1)) && !listOfEqs.contains(t)) {
cntOfEqSimbs++;
} // if.
if (cntOfEqSimbs==etIn.getText().toString().length()) listOfEqs.add(t);


/* if (!t.substring(i, i+1).equalsIgnoreCase(etIn.getText().toString().substring(i, i+1)) || listOfEqs.contains(t))
break;
// listOfEqs.add(t);

*/

} // nested for.
} // for.

twFound.setVisibility(0);
lvOfEqs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.test_list_item, listOfEqs));
} // onClick.
listOfNames - массив строк, источник имен для сравнения.
listOfEqs - массив строк, в который вносятся совпадающие имена.
endOfStr - предел, до которого сравниваем (нужен, так как не знаем, что будет короче: имя или введенная строка.
etIn - EditText, в который вводится строка для сравнения с именем.
cntOfEqSimbs - счетчик совпадающих символов (нужен для отбраковки: если хотя бы одна буква не совпадет, то имя не будет внесено в список совпадающих).

Да, у меня есть работающий if, но неработающий нравится больше, так как там нет лишней переменной cntOfEqSimbs и второго if.

P.S. Не оформил код в нужные теги, так как при этом не получилось бы выделить цветом работающую и неработающую части.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2011, 17:38
Ответы с готовыми решениями:

Правильная запись возврата функции или почему один метод работает, а второй нет?
Всем добрый вечере. Появилась такая проблемка, почему такая функция не...

Один раз, - нет! Второй, - да!
Почему в 77-ой строке не осуществляется вызов оператора индексирования, а в...

В один файл пишется, в второй нет
имеется structura=record counterStructur:integer; ...

2 ноутбука: один Wi-Fi ловит, второй - нет
Всем привет! Дома два ноута: Асер с семеркой и Хьюлит с восьмеркой. Какой...

Объединить две записи, в которых один столбец одинаковый, а второй нет
Добрый день. Есть две записи. Name----------Adress Петров--------Москва...

1
binarytoys
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 19
22.06.2011, 20:30 2
За такой код увольняют сразу и без выходного пособия. Что бы на каждую операцию сравнения символа в позиции создавалось минимум три строки - это надо постараться.
Что помешало сразу привести символы к одному размеру и выполнить простое посимвольное сравнение? Да, строк кода будет больше, но алгоритм прозрачнее и работать будет в разы быстрее.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2011, 20:30

Что делать, если один компилятор компилирует без ошибок, а второй - нет?
Здравствуйте! У меня на одну из строчек в проекте компилятор gcc выдает...

Простая казалось бы задача. Двое друзей пошли в магазин. Но дорогу знает только один
Привет На первый взгляд детская задача. Двое друзей пошли в магазин. Но...

Казалось бы простой запрос, а не работает!
Здравствуйте! Тема очень простая на первый взгляд. У меня есть таблица: id...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru