Squeak.ru - шаблоны программирования

Java, Android - как преобразовать строку в число?

Я разрабатываю приложение, в котором пользователь будет взаимодействовать с помощью Voice. Всякий раз, когда пользователь говорит первый, второй, третий и т. д., мне нужно преобразовать строку «первый» в int 1, строку «второй» в int 2.

Пока что я выяснил, что (Java-Android Как преобразовать буквы в строке в указанное число), преобразовать каждую букву в строке в соответствующее число, а затем вернуть некоторое число. Но это не то, что мне нужно. Я действительно застрял. Любая помощь будет оценена по достоинству.

12.04.2017

  • Для этого нет встроенного API. Вам придется писать его полностью самостоятельно. Насколько большое число вам понадобится? Если он относительно небольшой, подойдет простая карта. 12.04.2017
  • Спасибо за ваш ответ, я знаю, что нет встроенного API. Я не знаю, как долго число может расти. 12.04.2017
  • Возможный дубликат stackoverflow.com/ вопросы/4062022/ 12.04.2017

Ответы:


1

Точного способа сделать это не существует. Но для получения функциональности вы можете использовать Switch case Например: -

switch(WordNumber) {
   case First:
       System.out.println(1);
       return 1;
      break; // optional

   case Two:
       System.out.println(2);
       return 2;
      break; // optional

   // You can have any number of case statements.
   default : // Optional
      // Statements
}
12.04.2017
  • Хорошее решение, поскольку OP прокомментировал после вашего ответа, что конкретного ограничения нет, я бы сказал, что ответ все еще действителен! 12.04.2017

  • 2

    Если вы определяете список со всеми этими строковыми кардиналами, вы можете использовать indexOf и получить искомое значение, но внимательно рассмотрите нулевой элемент: либо добавьте в список нулевой кардинальный элемент, либо добавьте 1 к значению индекса

    List<String> cardinal = Arrays.asList("first", "second", "third", .. etc);
    System.out.println(cardinal.indexOf("first") + 1);
    
    12.04.2017
  • Спасибо за ответ. Я воспользуюсь логикой. 12.04.2017
  • Это плохой способ сделать это. indexOf равен O (n). Ужасное выступление. 12.04.2017
  • @GabeSechan, тогда что бы ты предложил? 12.04.2017
  • Карта‹Строка, Целое›. Та же идея, но время поиска O(1). 12.04.2017

  • 3

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

    Так что просто создайте что-то вроде:

    { "one", "two", "three", ... "nine" }
    { "ten, "twenty", "thirteen", ... "nineteen"}
    .. hundreds
    .. thousands
    .. specific case for eleven, twelves, ...
    

    Затем вам нужно будет проанализировать значение, подобное "twenty two", разбив его и найти каждое соответствующее.

    twenty = index 1 of tens array => (1 + 1) * 10 = 20
    two = 2 => index 1 in unit array => 1 + 1 = 2
    
    20 + 2
    
    22
    

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

    12.04.2017

    4

    Я предполагаю, что у вас есть хотя бы какой-то способ получить строковые значения?

    Если числа относительно небольшие (~ 10), то это может сделать хэш-карта. Просто заранее сохраните их вручную и найдите их по строке.

    HashMap<String, Integer>
    

    Если у вас есть гораздо больший список (~ 100), у вас будет метод, который будет делить входящие целые числа на подномера. Таким образом, в этом случае вы бы посмотрели на значение «десять» и объединили его со значением поста.

    2 = Second
    
    22 - Twenty-second 
    
    52 - Fifty-second
    
    12.04.2017
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...