
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.106.222] |
![]() |
|
Сообщ.
#1
,
|
|
|
Привет ребятки
![]() Подскажите пожалуйста,как решить такую вот задачку: дана строка String str = "12.3fkd.4.-39rj4a33" Как из этой прелести вывести ЧИСЛА ( не просто цифры,а числа дробные,отрицательные) и при этом не применять регулярные выражения. ![]() |
Сообщ.
#2
,
|
|
|
Пройтесь по строке, выясняя относится ли текущий символ к цифровому (0-9, знак: +/-, точка/запятая), и если относится - формировать текущее найденное число. Если нет, значит, предыдущее найденное число закончилось.
тут еще есть пара ньюансов, вроде того, что знак (если он есть) может бть только один, и стояить первым символом, а точка/запятая - тоже только одна может быть. |
![]() |
Сообщ.
#3
,
|
|
а меня всегда радуют задания с дыркой от бублика вместо условий
![]() ![]() ![]() String inputString = "12.3fkd.4.-39rj4a33"; Map<String, Double> foundNumbers = new HashMap<>(); for (int gap = 1; gap < inputString.length(); gap++) for (int pos = 0; pos < inputString.length(); pos++) try { String fragment = inputString.substring(pos, Math.min(pos + gap, inputString.length())); foundNumbers.put(fragment, Double.parseDouble(fragment)); } catch (Exception ignored) { } foundNumbers.entrySet().forEach( entry -> System.out.println(entry.getKey() + " = " + entry.getValue())); |
Сообщ.
#4
,
|
|
|
wind вообще то обработкой исключений искать числа не лучшая идея, поскольку выброс самого исключения дороговатая операция
|
![]() |
Сообщ.
#5
,
|
|
d_k, не воспринимай этот кусок кода серьезно
|
![]() |
Сообщ.
#6
,
|
|
я бы простейший конечный автомат нарисовал
|