Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Red Planet
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263

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

21.06.2011, 17:38. Показов 2099. Ответов 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().lengt h(), t.length());
int cntOfEqSimbs = 0;
for (int i=0; i<endOfStr; ++i) {
if (t.substring(i, i+1).equalsIgnoreCase(etIn.getText().toS tring().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().toS tring().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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.06.2011, 17:38
Ответы с готовыми решениями:

Почему один запрос работает, а второй нет?
два случая один работает второй нет :( почему?? что делать?? 1. обращение к таблице в аксесе... sSQL = &quot;SELECT * from TR110...

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

Один комп видит второй, а второй первого нет
Есть не сложная сетб Комп A ↔ Комп Б ↔ Комп В У компа А IP 192.168.70.110 У компа Б два интерфейса 192.168.70.112 и...

1
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 19
22.06.2011, 20:30
За такой код увольняют сразу и без выходного пособия. Что бы на каждую операцию сравнения символа в позиции создавалось минимум три строки - это надо постараться.
Что помешало сразу привести символы к одному размеру и выполнить простое посимвольное сравнение? Да, строк кода будет больше, но алгоритм прозрачнее и работать будет в разы быстрее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.06.2011, 20:30
Помогаю со студенческими работами здесь

Один раз, - нет! Второй, - да!
Почему в 77-ой строке не осуществляется вызов оператора индексирования, а в 88-ой, - осуществляется (135-145)? #include...

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

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

Один принтер печатает поток PDF, второй нет. ПК идентичные.
Есть 2 ПК , идентичны , из 1 образа, есть 2 принтера (одинаковые samsung 4020DN)/. Как может на одном печатать поток pdf, а на другом нет?...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru