Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> StrToInt????? как правильно перевести строковые данные 
:(
    Опции темы
Riki_tiki_tavi
Дата 20.4.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.3.2005

Репутация: нет
Всего: нет



Доброго времени суток всем! Вот, нужда заставляет меня и начать писать на яве. Естественно и возникают такие дурацкие вопросы: как преобразовать String в int, есть ли стандартные функции или писать свою? Помогите пожалуйста smile
PM MAIL   Вверх
Domestic Cat
Дата 20.4.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Код

int i = Integer.parseInt("1223");



--------------------

PM   Вверх
Riki_tiki_tavi
Дата 20.4.2005, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.3.2005

Репутация: нет
Всего: нет



точно, спасибо, странно, я не посмотрел в Integer, а мне почему то казалось что это должно было быть в String'е... Ладно, все равно извините за дурацкий вопрос, с кем не бывает smile

Это сообщение отредактировал(а) Riki_tiki_tavi - 20.4.2005, 18:42
PM MAIL   Вверх
AntonSaburov
Дата 20.4.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Riki_tiki_tavi @ 20.4.2005, 18:40)
Ладно, все равно извините за дурацкий вопрос, с кем не бывае

Какие проблемы - заходи и спрашивай. Мы для этого и существуем.
PM MAIL WWW ICQ   Вверх
Guest
Дата 26.4.2005, 14:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Лучше так:
Код

int n;
try {
  n = Integer.parseInt(str);
} catch (NumberFormatException ex) {
  n = 0;
}


  Вверх
batigoal
Дата 26.4.2005, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Ну так и было предложено выше, только без подробностей.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 26.4.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Цитата(Guest @ 26.4.2005, 14:41)
Лучше так:


Ничего не лучше. Программерам, которые втихушку "глотают" эксепшены, надо просто отрывать руки.

Это на самом деле огромниый топик сам по себе, но в двух словах дело обстоит так. Преобразовывать строку в число приходится в основном при обработке входных данных, источником которых может быть что угодно: девайс, другая программа, юзерский ввод и т. д.

Если строка содержит вместо ожидаемого числа всякие кракозябры, на это надо немедленно реагировать! При этом любая вменяемая программа должна сделать как минимум две вещи: занести в лог запись об ошибке и вывести сообщение пользователю. Чего многие не понимают, это что это два совершенно разных типа сообщений. В логи нужно занести как можно больше полезной информации для скорейшего отлова и фиксения (если это баг). А юзеру нужно выдать теплое человеческое сообщение о том, что случился кирдык и, если это ошибка ввода, вежливо попросить ввести данные заново. В противном случае попросить связаться со службой поддержки, не забыв указать референс намбер ошибки.

Так вот, в случае с исходным вариантом (без ловли эксепшена), если что случись, исключение пойдет вверх по стеку вызовов и есть шанс что рано или поздно наткнется на блок, который знает, что с ним делать. А так, как ты написал - ноль-то он присвоит, да вот аукнуться это может совершенно в другом месте программы, которое отстоит от твоего кода километров на десять. И ищи его свищи.

А ты говоришь smile

PM WWW   Вверх
Domestic Cat
Дата 26.4.2005, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Ну устроили из-за трай-кетча smile
На форуме чаще всего выкладывается сырой код, потому что просто времени нет ловить все иксепшны, наводить красоту и т п. На конкретный вопрос дается конкретный ответ.


--------------------

PM   Вверх
Stampede
Дата 26.4.2005, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Цитата(Domestic @ 26.4.2005, 21:23)
Ну устроили из-за трай-кетча


Дык, кто устроил-то? Ты вот просто дал код, коротко и по теме. И тут приходит какой-то [beep] с бугра - ни имени, ни отчества, и с порога заявляет, что вот так вот будет лучше. А ведь этот топик может и незамутненному неофиту на глаза попасться, и уверует человек, что и вправду так лучше.

Не будет так лучше, товарищ Гуест. Почему - тебе объяснили. Хочешь поспорить - валяй, только будь добр зарегистрируйся сначала. А то такое чувство, что с привидением разговариваешь smile

PM WWW   Вверх
Domestic Cat
Дата 26.4.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Верно говоришь smile




--------------------

PM   Вверх
Fantasist
Дата 26.4.2005, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 2
Всего: 41



Цитата(Stampede @ 26.4.2005, 19:07)
Не будет так лучше, товарищ Гуест.


Ну. Ну. Вполне возможно, что логика программы отвечает такому решению. Мы ведь не знаем. smile Грамотная обработка ошибок - это очень большая и сложная тема.




--------------------
Волны гасят ветер...
PM MAIL   Вверх
Stampede
Дата 27.4.2005, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Цитата(Fantasist @ 26.4.2005, 23:05)
Вполне возможно, что логика программы отвечает такому решению.


Не спорю! Очень даже может такое быть! Только не надо предлагать это в качестве безусловно "более лучшего" решения, не потрудившись даже обозначить границы применимости.

Цитата(Fantasist @ 26.4.2005, 23:05)
Грамотная обработка ошибок - это очень большая и сложная тема.


Тоже верно. Как верно и то, что существуют все-таки фундаментальные принципы и общие guidelines. Прошу заметить, я ведь не проповедовал какой-то конкретный подход, типа там fine-grained app exceptions или раннее/позднее ловление или exception wrapping или еще что-нибудь - это все как раз application-specific и up to the implementation.

А вот то, что я сказал по поводу отдельных задач логирования и выдачи пользовательских сообщений - это, пожалуй, наменьший общий знаменатель, который можно подвести под большинство стратегий обрабртки ошибок.

PM WWW   Вверх
Zandr
Дата 27.4.2005, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



[off]
Цитата
какой-то [beep] с бугра

Сильно smile
[/off]

Это сообщение отредактировал(а) Zandr - 27.4.2005, 06:17
PM MAIL   Вверх
Fantasist
Дата 27.4.2005, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 2
Всего: 41



Stampede

Гм... А совсем по-русски уже не получается. smile

Цитата(Stampede @ 26.4.2005, 21:19)
Как верно и то, что существуют все-таки фундаментальные принципы и общие guidelines.


Согласен. Я имел в виду, что начинать разговор о правильности обработки ошибок в треде StrToInt как бы... слегка не к месту. smile





--------------------
Волны гасят ветер...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.