| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java ME (J2ME) > Помогите с чтением из файла |
| Автор: Zita 3.6.2008, 17:17 | ||
| Всем привет! Делаю на J2ME что-то типа авторизации. Читаю из файла следующие данные - кол-во пользователей(один раз), пользователь, его пароль. Если всего 1 пользователь, то у меня все работает, а если больше одного тогда не хочет. Вот код:
Помогите плиз советом. Заранее спасибо. |
| Автор: Dummy 3.6.2008, 22:03 |
| Если цикл заканчивается после 30-й строчки, то проблема в том, что после строчки 24 ты не обновляешь значение переменной i0. Поэтому на 1-й итерации считается пара "логин#0-пароль#0" (правильно), на 2-й считается пара "пароль#0-логин#1"(неправильно), на 3-й - пара "логин#1-пароль#1" (по форме правильно, но по смыслу здесь уже должно было быть "логин#2-пароль#2"и т. д. |
| Автор: Zita 3.6.2008, 22:30 | ||||
Поставил после PassTemp = str.substring(i0+1,i); i0 = i; Но все равно не работает при вводе правильного логина и пароля. Вот полный код обработки ввода:
|
| Автор: Dummy 3.6.2008, 22:45 | ||
Шикарно |
| Автор: Zita 3.6.2008, 23:59 |
| Dummy, этот код сгенерировал NetBeans. Т.е. получается throw new UnsupportedOperationException("Not supported yet."); надо удалить??? Спасибо за советы. UPD: Закоментировал эту строку и все равно не пашет. После ввода попадаю сюда - Alert myAlertj = new Alert("j",Integer.toString(j),null,null); mydisplay.setCurrent(myAlertj); |
| Автор: Dummy 4.6.2008, 00:05 |
| Да, конечно, нужно удалить. NetBeans генерирует заглушки методов, и по умолчанию метод просто выкидывает UnsupportedOperationException(), просто чтобы просигнализировать разработчику, что этот метод не реализован. Как правило, следует это удалить и написать свою реализацию, возможно, пустую. И, конечно, в твоем случае этот эксепшн абсолютно ни к чему. |
| Автор: Zita 4.6.2008, 00:12 |
| Dummy, все равно не работает - неправильно считывает из файла(у меня данные разделены |, захватывает разделитель). Посоветуй плиз нормальную среду для разработки приложения под J2ME, чтобы был хороший Debug, так как в NetBeans он вообще никакой и ничего нельзя проследить. Заранее спасибо. |
| Автор: Dummy 4.6.2008, 01:14 | ||||
| Да все нормально должно быть в NetBeans Mobility, просто настроить надо. Правда, я по застарелой привычке пользуюсь IntelliJ Idea Еще есть любители, которые Eclipse гоняют, но тут я не советчик - Eclipse никогда не использовал и пока не собираюсь. А по поводу того, что считывает неправильно... Посмотри, что у тебя там с индексами творится - это уже, видимо, алгоритмическая ошибка, а не проблема собственно считывания из файла. Мне что-то уже лениво чужой код дебажить, не сердись уж Ты, кстати, опиши, хотя бы, что за ошибка-то. Как выглядит, что происходит, что не так. Добавлено @ 01:26 Ну, собссно, еще один баг находится быстро.
нужно брать substring(i0, i - 1). Я уж не говорю о том, что надо бы обрабатывать ситуацию, когда мы не находим очередного "|". И даже не говорю о том, что будет, если в файле по какой-то причине будет идти, например, 2 слэша подряд. И совсем молчу о том, что такой код выполнять в commandAction() крайне не рекомендуется, ибо долгий он и блокирующий, да еще и IOException запросто схлопотать можно, что совсем уж чревато. Лучше запустить отдельный поток как-нибудь так:
|
| Автор: Zita 4.6.2008, 12:05 | ||
Dummy, получается что при вводе правильного логина и пароля не проходит аутентификация. И в этом коде
я получаю последний логин. Т.е. первые логины в файле он пропускает??? |
| Автор: Dummy 4.6.2008, 13:39 | ||||
Во-первых, я лажанул вот с этим советом:
Правильно сейчас у тебя написано, надо брать substring(i0, i). Вообще, покажи, как твой ini-файл выглядит (желательно приаттачить). Затем, измени код так, чтобы каждый раз он выводил LoginNameTemp, PassTemp через System.out.println. Или проще поставить breakpoint на 19-й строчке. Вот это в качестве отладочного лога никак не подходит:
Т. к. действительно в итоге отобразится только алерт с последним логином, что ты и видишь))) |
| Автор: Zita 4.6.2008, 15:27 |
| Dummy, спасибо помогло - убрал алерты. Теперь все пашет. Подскажи плиз как вывести сообщение если пользователя нет в файле?? Если бы мог поставил бы +. |
| Автор: Dummy 4.6.2008, 16:05 | ||
А вот здесь уже как раз пригодится Alert
Только смотри, чтобы на момент исполнения этого кода текущим на экране был не Alert, иначе получишь IllegalArgumentException . |
| Автор: Zita 5.6.2008, 00:56 | ||
| С одной проблемой помогли разобраться, но появилась другая. Я пишу программу для тестирования и сами вопросы читаю из файла. Первый вопрос читается хорошо, а дальше после обработки выбора ответа не получается вывести 2-й вопрос(остается на первом вопросе). Помогите плиз разобраться в чем трабла. Заранее спасибо. Вот код:
|
| Автор: Zita 5.6.2008, 08:52 |
| Как надо обрабатывать ввод ответа и чтобы потом сразу выодились следующие вопросы? |
| Автор: Zita 5.6.2008, 19:59 |
| Все сам нашел ошибку! |
| Автор: Dummy 5.6.2008, 21:10 |
| Вот. Хочешь сделать что-то хорошо - сделай это сам))) |