Как из строки получить число java
Перейти к содержимому

Как из строки получить число java

  • автор:

Java число в строку — конвертировать, преобразовать, пример

vedro-compota's picture

В Java число в строку перевести можно несколькими способами:

1) классика:

int aInt = 1; String aString = Integer.toString(aInt);

2) своеобразный «хак»:

String a= 5+"";

3) Универсальный метод, который приведёт к строке и double и float и int:

String s = String.valueOf(123);

Key Words for FKN + antitotal forum (CS VSU):

  • математический факультет ВГУ
  • матфак ВГУ
  • фкн вгу
  • сообщество программистов
  • Воронеж
  • программирование Воронеж
  • математика
  • сайт о программировании

Выделить числа из строки и найти их сумму в java?

есть строка, например, «Вася заработал 5000 рублей, Петя — 7563 рубля, а Маша — 30000». Вывод должен дать сумму всех чисел в строке. Я извлекла числа из строки, но не понимаю как их сложить. Регулярные выражения использовать нельзя

String str = text.trim(); String digits=""; for (int i = 0; i < str.length(); i++) < char chrs = str.charAt(i); if (Character.isDigit(chrs)) digits = digits+chrs; >System.out.println(digits);

Выводит 5000756330000. Как вывести 42563?

  • Вопрос задан более двух лет назад
  • 6197 просмотров

Комментировать

Решения вопроса 0

Ответы на вопрос 5

Денис Загаевский @zagayevskiy Куратор тега Java

Android developer at Yandex

Раз регулярные выражения использовать нельзя, пиши конечный автомат. Там будет всего пара состояний(читаем число(D), читаем не число(C)) и переходы между ними.
Вначале находится в состоянии С.
Находясь в состоянии С, видим цифру — переходим в состояние D, и пишем цифру в буфер, переходим на следующий символ. Находясь в состоянии С и видя не-цифру, остаёмся в С и переходим на следующий символ.
Находясь в состоянии D и видя цифру — остаёмся в D и дописываем цифру в буфер. Находясь в состоянии D и видя не-цифру, переходим в состояние C, буфер прибавляем к сумме, буфер очищаем.
Буфер может быть сразу числом, тогда добавление в него значит buffer = buffer*10+d, а очищение — присваивание нуля.

Ответ написан более двух лет назад

Получить числа из строки

Есть строка, она содержит числа, допустим, пароль — 450. Как получить это число? Строка может содержать русский текст.

Отслеживать
51.3k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 4 ноя 2011 в 21:28
AndroidDev AndroidDev
1,684 2 2 золотых знака 28 28 серебряных знаков 59 59 бронзовых знаков
То есть в строке не только одно число, а что-то еще?
4 ноя 2011 в 21:57

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

import java.util.regex.*; Pattern pat=Pattern.compile("[-]?[0-9]+(.[0-9]+)?"); Matcher matcher=pat.matcher("45.5saf -fg123 -18+"); while (matcher.find()) < System.out.println(matcher.group()); >; 

Так можно получить все числа из строки.
Результат этого примера 45.5; 123; -18.
Отслеживать
ответ дан 4 ноя 2011 в 22:52
17.9k 3 3 золотых знака 47 47 серебряных знаков 86 86 бронзовых знаков
@ReinRaus, да, ваш код лучше.
4 ноя 2011 в 22:53
Регулярное выражение не верное) например 44..1
6 ноя 2011 в 16:29
Спасибо, исправил.
10 ноя 2011 в 1:59

Вот такой код найдет все числа в строке:

 Pattern pattern = Pattern.compile("\\d+"); String word = "test123test444test"; // мой пример строки Matcher matcher = pattern.matcher(word); int start = 0; while (matcher.find(start))

Отслеживать
ответ дан 4 ноя 2011 в 22:45
8,667 18 18 золотых знаков 74 74 серебряных знака 182 182 бронзовых знака

String s1 ="пароль - 450"; String s2 = s1.split("\\\D+"); //s2 - символьный массив всех числовых вхождений. 

Вопрос старый, но поисковики выводят ее практически первой. Мало ли кому пригодится.

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Java: проверьте, является ли строка числом

Введение Строки — это удобный способ передачи информации и получения ввода от пользователя. В этой статье мы рассмотрим несколько способов проверки того, является ли String числовым в Java, то есть представляет ли String числовое значение. Проверьте, является ли строка числовой с помощью Core Java. Пользователи часто ошибаются при вводе значений, поэтому разработчики должны как можно дольше держать их за руку во время операций ввода-вывода. Самый простой способ проверить, является ли строка числовой или нет, принадлежит нам.

Время чтения: 5 мин.

Вступление

Строки — это удобный способ передачи информации и получения ввода от пользователя.

В этой статье мы рассмотрим несколько способов проверить, является ли String числовым в Java, то есть представляет ли String числовое значение.

Проверьте, является ли строка числовой с помощью Core Java

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

Самый простой способ проверить, является ли String числовым или нет, — использовать один из следующих встроенных методов Java:

  1. Integer.parseInt()
  2. Integer.valueOf()
  3. Double.parseDouble()
  4. Float.parseFloat()
  5. Long.parseLong()

Эти методы преобразуют заданную String в ее числовой эквивалент. Если они не могут его преобразовать, NumberFormatException , указывающее, что строка не является числовой.

Стоит отметить, что Integer.valueOf() возвращает new Integer() , а Integer.parseInt() возвращает примитивный int . Имейте это в виду, если такая разница изменит ход вашей программы.

Давайте попробуем это:

 String string = "10"; try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e)
 true 

Теперь для удобства мы можем абстрагировать эту функциональность во вспомогательный метод:

 public static boolean isNumeric(String string) < int intValue; System.out.println(String.format("Parsing string: \"%s\"", string)); if(string == null || string.equals("")) < System.out.println("String cannot be parsed, it is null or empty."); return false; >try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e) < System.out.println("Input String cannot be parsed to Integer."); >return false; > 

Теперь мы можем просто позвонить:

 String string = "10"; if(isNumeric(string)) < System.out.println("String is numeric!"); // Do something >else

Выполнение этого кода приведет к:

 Parsing string: "10" String is numeric! 

С другой стороны, если мы ожидаем, что String будет содержать действительно большое число, мы можем вызвать конструктор BigInteger(String) , который переводит представление String BigInteger .

Проверьте, является ли строка числовой с помощью Apache Commons

Apache Commons — одна из наиболее часто используемых сторонних библиотек для расширения базовой Java Framework. Это дает нам более точный контроль над основными классами Java, в данном случае над строками.

Мы рассмотрим два класса из библиотеки Apache Commons:

  1. NumberUtils
  2. StringUtils

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

Давайте теперь посмотрим, как мы можем проверить числовые значения с помощью этих методов.

NumberUtils.isParsable ()

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

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

Обратите внимание, что шестнадцатеричные числа и научные обозначения не считаются анализируемыми.

Теперь нам даже не нужен вспомогательный вспомогательный метод, поскольку isParseable() возвращает само boolean

 String string = "10"; if (NumberUtils.isParsable(string)) < System.out.println("String is numeric!"); >else

Этот код должен вернуть:

 String is numeric! 
NumberUtils.isCreatable ()

Этот метод также принимает строку и проверяет, является ли это допустимым номером Java . С помощью этого метода мы можем охватить еще больше чисел, потому что действительный номер Java включает четные шестнадцатеричные и восьмеричные числа, научную нотацию, а также числа, отмеченные квалификатором типа.

Теперь мы даже можем использовать что-то вроде:

 String string = "0x10AB"; if (NumberUtils.isCreatable(string)) < System.out.println("String contains a creatable number!"); >else
 String contains a creatable number! 
NumberUtils.isDigits ()

Метод NumberUtils.isDigits() проверяет, содержит ли строка только цифры Unicode. Если String содержит начальный знак или десятичную точку, метод вернет false :

 String string = "25"; if (NumberUtils.isDigits(string)) < System.out.println("String is numeric!"); >else
StringUtils.isNumeric ()

StringUtils.isNumeric() является StringUtils эквивалент NumberUtils.isDigits() .

Если String проходит числовой тест, он все равно может генерировать NumberFormatException при синтаксическом анализе упомянутыми ранее методами, например, если он выходит за пределы диапазона для int или long .

Используя этот метод, мы можем определить, можем ли мы преобразовать String Integer :

 String string = "25"; if (StringUtils.isNumeric(string)) < System.out.println("String is numeric!"); >else
StringUtils.isNumericSpace ()

Кроме того, если мы ожидаем найти больше чисел в isNumericSpace , еще один полезный StringUtils стоит упомянуть. Он проверяет, String только цифры или пробелы Unicode.

Давайте проверим строку, содержащую числа и пробелы:

 String string = "25 50 15"; if (StringUtils.isNumericSpace(string)) < System.out.println("String is numeric!"); >else
 String is numeric! 

Проверьте, является ли строка числовой с помощью Regex

Несмотря на то, что большинство разработчиков будут довольны использованием уже реализованного метода, иногда у вас может быть очень специфическая проверка шаблона:

 public static boolean isNumeric(String string) < // Checks if the provided string // is a numeric by applying a regular // expression on it. String regex = "[0-9]+[\\.]?[0-9]*"; return Pattern.matches(regex, string); >

А затем мы можем вызвать этот метод:

 System.out.println("123: " + isStringNumeric2("123")); System.out.println("I'm totally a numeric, trust me: " + isStringNumeric2("I'm totally a numeric, trust me")); 

Выполнение этого дает нам следующий результат:

 123: true I'm totally a numeric, trust me: false 

Заключение

В этой статье мы рассмотрели несколько способов проверить, является ли строка числовой или нет (представляет собой число) в Java.

Мы начали с Core Java и NumberFormatException , после чего использовали библиотеку Apache Commons. Оттуда мы использовали StringUtils и NumberUtils чтобы проверить, является ли String числовым или нет, с различными форматами.

Licensed under CC BY-NC-SA 4.0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *