metaclass: (дзедline)
metaclass ([personal profile] metaclass) wrote2013-03-21 11:25 am
Entry tags:

java try parse integer

А почему в java нету готовых методов, которые бы позволяли парсить числа, не кидая исключений?
Т.е. возвращали бы true+число, либо false, типа как int.TryParse в дотнете.

[identity profile] artureg.livejournal.com 2013-03-21 08:26 am (UTC)(link)
ответ "потому что" тебя устроит?

[identity profile] metaclass.livejournal.com 2013-03-21 08:34 am (UTC)(link)
Нет, этому должно быть разумное объяснение :)

(no subject)

[identity profile] artureg.livejournal.com - 2013-03-21 08:35 (UTC) - Expand
develop7: (dero)

[personal profile] develop7 2013-03-22 05:10 am (UTC)(link)
Не стесняйтесь цитировать полностью: «потому что иди-ка ты нахуй»

[identity profile] bydlorus.livejournal.com 2013-03-21 08:32 am (UTC)(link)
Согласно Java Guidelines, если есть два способа реализовать функциональность - правильный и медленный - необходимо выбрать второй вариант, иначе мейнфреймы будут плохо продаваться.

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:25 (UTC) - Expand

(no subject)

[identity profile] artureg.livejournal.com - 2013-03-21 10:29 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:32 (UTC) - Expand

[identity profile] stop-nonsense.livejournal.com 2013-03-21 09:11 am (UTC)(link)
http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=java
Хватит уже поддерживать этот миф.

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-03-21 09:25 (UTC) - Expand

(Anonymous) 2013-03-21 08:33 am (UTC)(link)
Наверное, потому что в джаве нет out параметров.

[identity profile] metaclass.livejournal.com 2013-03-21 08:35 am (UTC)(link)
Скорее всего да, а мудрить отдельный класс на возвращение двух вариантов таки злодеяние.

(no subject)

[identity profile] predatorre.livejournal.com - 2013-03-21 08:42 (UTC) - Expand

(no subject)

[identity profile] artureg.livejournal.com - 2013-03-21 08:43 (UTC) - Expand

(no subject)

[identity profile] predatorre.livejournal.com - 2013-03-21 08:45 (UTC) - Expand

(no subject)

[identity profile] artureg.livejournal.com - 2013-03-21 08:50 (UTC) - Expand

(no subject)

[identity profile] predatorre.livejournal.com - 2013-03-21 08:53 (UTC) - Expand

(no subject)

[identity profile] artureg.livejournal.com - 2013-03-21 09:00 (UTC) - Expand

[identity profile] enternet.livejournal.com 2013-03-21 08:37 am (UTC)(link)
Если кратко, то стандартную библиотеку Java писали студенты за еду. Это реально адов пиздец. Нет ничего нужного вообще. Даже работу со стандартными типами данных умудрились испоганить.

[identity profile] artureg.livejournal.com 2013-03-21 09:00 am (UTC)(link)
эти студенты уже матёрые бородаты жабаеды и учат других студентов

[identity profile] volodymir-k.livejournal.com 2013-03-21 09:11 am (UTC)(link)
> Если кратко, то стандартную библиотеку Java писали студенты за еду.

Если вы нихера не знаете, зачем лжёте?
Стандартную библиотеку в Sun писал сам Гослинг -- умный осилит загуглить, а вам незачем.


О том, что "нужно" людям, хорошо говорит факт отсутствия альтернативных библиотек. Проблемы в вас.

(no subject)

[identity profile] artureg.livejournal.com - 2013-03-21 09:28 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-03-21 09:44 (UTC) - Expand

(no subject)

[identity profile] henu3detb.livejournal.com - 2013-03-21 11:45 (UTC) - Expand

(no subject)

[identity profile] enternet.livejournal.com - 2013-03-21 09:33 (UTC) - Expand

(no subject)

[identity profile] volodymir-k.livejournal.com - 2013-03-21 14:45 (UTC) - Expand

(no subject)

[identity profile] enternet.livejournal.com - 2013-03-21 15:07 (UTC) - Expand

(no subject)

[identity profile] familom.livejournal.com - 2013-03-21 13:19 (UTC) - Expand

[identity profile] kosiakk.livejournal.com 2013-03-21 08:42 am (UTC)(link)
Это уже не модно.

void Integer.tryParse( String input, (int -> void) callback)

[identity profile] bydlorus.livejournal.com 2013-03-21 08:43 am (UTC)(link)
И это уже не модно
void Integer.tryParse( String input, async (int -> void) callback)

(no subject)

[identity profile] artureg.livejournal.com - 2013-03-21 08:54 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-03-21 09:26 (UTC) - Expand

(no subject)

[identity profile] guamoka.livejournal.com - 2013-03-21 11:54 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-03-21 11:56 (UTC) - Expand

[identity profile] metaclass.livejournal.com 2013-03-21 08:50 am (UTC)(link)
CPS ок

(no subject)

[identity profile] denisioru.livejournal.com - 2013-03-21 09:38 (UTC) - Expand

(no subject)

[identity profile] kosiakk.livejournal.com - 2013-03-21 09:43 (UTC) - Expand

(no subject)

[identity profile] denisioru.livejournal.com - 2013-03-21 11:47 (UTC) - Expand

[identity profile] volodymir-k.livejournal.com 2013-03-21 09:14 am (UTC)(link)
java.text.NumberFormat::parse(String source, ParsePosition parsePosition)
http://docs.oracle.com/javase/6/docs/api/java/text/NumberFormat.html#parse%28java.lang.String,%20java.text.ParsePosition%29
во всех видах, позах, вариантах

[identity profile] sergiej.livejournal.com 2013-03-21 03:46 pm (UTC)(link)
+100 причём делать его надо как можно ближе места ввода данных криворукими (на ГУИ), чтобы логика приложения уже была чиста от левых чисел в стрингах.

[identity profile] vit-r.livejournal.com 2013-03-21 09:14 am (UTC)(link)
Ха. Апатамучта ява предназначена для криворуких обезьян, то есть изначально предполагается, что все эти true/false никто проверять не будет.

[identity profile] ivan sopov (from livejournal.com) 2013-03-21 09:37 am (UTC)(link)
com.google.common.primitives.Ints.tryParse

[identity profile] vadim ridosh (from livejournal.com) 2013-03-21 12:14 pm (UTC)(link)
Присоединяюсь. ИМХО гугль гуава - это маст хэв, отличный костыль с турбонаддувом для такого инвалида как Java.

(no subject)

[identity profile] volodymir-k.livejournal.com - 2013-03-21 14:48 (UTC) - Expand

(no subject)

[identity profile] vadim ridosh - 2013-03-21 16:49 (UTC) - Expand

[identity profile] kzn.livejournal.com 2013-03-21 09:39 am (UTC)(link)
А в чем их возвращать? Можно сделать class что-то вроде MutableInteger, но как-то не очень красиво.
Можно возвращать Object[] - но это совсем уж извращение.

Чем так сильно отличает возвращение статуса от кидания исключения?

[identity profile] vp.livejournal.com 2013-03-21 09:47 am (UTC)(link)
Есть постулат, что строка, не подходящая по формату для преобразования в число - это идеологически не исключение, а вполне штатная ситуация. Потому правильны метод - возвращающий bool результат преобразования, а если все хорошо, то еще и модифицирующий переменную, которую мы ему указали.

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 09:53 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 09:57 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:23 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 10:24 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:26 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 10:30 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:36 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 10:38 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:39 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 10:42 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:56 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 10:58 (UTC) - Expand

(no subject)

[identity profile] sil-e-nt.livejournal.com - 2013-03-22 07:50 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-03-21 10:30 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:54 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-03-21 10:29 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 10:38 (UTC) - Expand

(no subject)

[identity profile] henu3detb.livejournal.com - 2013-03-21 11:36 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 11:39 (UTC) - Expand

(no subject)

[identity profile] henu3detb.livejournal.com - 2013-03-21 11:49 (UTC) - Expand

(no subject)

[identity profile] kzn.livejournal.com - 2013-03-21 11:59 (UTC) - Expand

(no subject)

[identity profile] avnik.livejournal.com - 2013-03-21 10:49 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 10:50 (UTC) - Expand

(no subject)

[identity profile] guamoka.livejournal.com - 2013-03-21 12:05 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 12:06 (UTC) - Expand

(no subject)

[identity profile] guamoka.livejournal.com - 2013-03-21 12:07 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-21 12:12 (UTC) - Expand

(no subject)

[identity profile] sil-e-nt.livejournal.com - 2013-03-22 07:54 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-03-22 08:14 (UTC) - Expand

(no subject)

[identity profile] juan-gandhi.livejournal.com - 2013-03-21 16:36 (UTC) - Expand

[identity profile] andrew kondratovich (from livejournal.com) 2013-03-21 09:43 am (UTC)(link)
  public static int getInteger(String value, int def) {
    try {
      return Integer.parseInt(value);
    } catch (Exception e) {
      return def;
    }
  }
Edited 2013-03-21 09:45 (UTC)

[identity profile] artureg.livejournal.com 2013-03-21 09:46 am (UTC)(link)
пизда пизда пизда

(no subject)

[identity profile] metaclass.livejournal.com - 2013-03-21 09:48 (UTC) - Expand

(no subject)

[identity profile] andrew kondratovich - 2013-03-21 11:20 (UTC) - Expand

(no subject)

[identity profile] andrew kondratovich - 2013-03-21 13:45 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-03-21 14:01 (UTC) - Expand

(no subject)

[identity profile] zmila.livejournal.com - 2013-03-21 14:49 (UTC) - Expand

(no subject)

[identity profile] dnnx.livejournal.com - 2013-03-21 12:33 (UTC) - Expand

(no subject)

[identity profile] zmila.livejournal.com - 2013-03-21 14:44 (UTC) - Expand

(no subject)

[identity profile] andrew kondratovich - 2013-03-21 15:11 (UTC) - Expand

(no subject)

[identity profile] sergiej.livejournal.com - 2013-03-21 15:52 (UTC) - Expand

(no subject)

[identity profile] andrew kondratovich - 2013-03-22 06:58 (UTC) - Expand

(no subject)

[identity profile] sergiej.livejournal.com - 2013-03-23 17:39 (UTC) - Expand
(deleted comment)

[identity profile] metaclass.livejournal.com 2013-03-21 10:21 am (UTC)(link)
Это можно, но само выполнение подобных действий у меня вызывает ощущение, что я вернулся в 90е годы и занимаюсь изобретением велосипедов :)

(no subject)

[identity profile] henu3detb.livejournal.com - 2013-03-21 11:58 (UTC) - Expand

[identity profile] sergiej.livejournal.com 2013-03-21 03:43 pm (UTC)(link)
Там, где ОЖИДАЕТСЯ некорректный ввод (правильность формата не проверена на ГУИ), должен использоваться NumberFormat. Там есть всё, что душа пожелает для "TryParse"

[identity profile] aka-shaggie.livejournal.com 2013-03-21 04:24 pm (UTC)(link)
Про Guava уже всё как надо рассказали. И ещё можно добавить, что в apache commons lang есть math.NumberUtils, который тоже это умеет. И в любой мало-мальский проект эта либа какими-нибудь зависимостями да притянута.

Но вообще проблема системная. Питонисты, например, не умеют без KeyError когда у них ключ в мапе не нашёлся, и ничего, тишина, никто не возмущается.

[identity profile] metaclass.livejournal.com 2013-03-21 04:42 pm (UTC)(link)
Охохо, с KeyError в питоне мне пришлось обшарить внутренности питономашины, чтобы доказать упертым линуксоидам что это косяк, а не "так можно".

[identity profile] juan-gandhi.livejournal.com 2013-03-21 04:35 pm (UTC)(link)
Ввести Maybe, написать самому. Делов-то.

Но тут другой нюанс - а на хера париться с джавой?

[identity profile] henu3detb.livejournal.com 2013-03-21 06:27 pm (UTC)(link)
Тогда, конечно, вопрос - а с чем париться?
develop7: (dero)

[personal profile] develop7 2013-03-22 05:12 am (UTC)(link)
Правильный вопрос: «зачем в java нету готовых методов, которые…» и далее по тексту.