【问题标题】:Java, Android - how to convert a string to a number? [closed]Java,Android - 如何将字符串转换为数字? [关闭]
【发布时间】:2017-04-12 05:59:37
【问题描述】:

我正在开发一个应用程序,用户将使用语音进行交互。每当用户说第一,第二,第三等时。我需要将字符串“first”转换为int 1,将字符串“second”转换为int 2。

到目前为止,我发现的是(Java-Android How to convert letters in a string to specified number),将字符串中的每个字母转换为相应的数字,然后返回一些数字。但我这不是我需要的。我真的被困住了。任何帮助将不胜感激。

【问题讨论】:

  • 没有用于此的内置 API。您将不得不自己完全编写它。你需要多高的数字?如果它相对较小,一张简单的地图就可以了。
  • 感谢您的回复,我知道没有内置api。我不知道这个数字会增长多久。

标签: java android string


【解决方案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
}

【讨论】:

  • 很好的解决方案,因为 OP 在您的回答后评论说没有具体限制,我会说答案仍然有效!
【解决方案2】:

您需要拆分接收的值,以分析每个步骤。由于您没有有限的价值,因此您需要为每个数字创建一个地图......这太过分了。

所以只需创建类似的东西:

{ "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

当然,这需要多考虑一下,但这会给你一个很好的系统来读取每个可能的数字。

【讨论】:

    【解决方案3】:

    如果您使用所有这些字符串基数定义一个列表,那么您可以使用 indexOf 并获取您要查找的值,但请仔细考虑 null 元素: 要么向列表中添加一个空基数元素,要么向索引值添加 1

    List<String> cardinal = Arrays.asList("first", "second", "third", .. etc);
    System.out.println(cardinal.indexOf("first") + 1);
    

    【讨论】:

    • 感谢您的回复。我会利用逻辑。
    • 这是一种不好的做法。 indexOf 是 O(n)。糟糕的表现。
    • @GabeSechan 那么你有什么建议?
    • 地图。相同的想法,但查找时间为 O(1)。
    【解决方案4】:

    我猜你至少有一些获取字符串值的方法?

    如果数字相对较小(~10),那么哈希图可以做到这一点。只需事先手动保存并通过字符串查找即可。

    HashMap<String, Integer>
    

    如果您有一个更大的列表(~100),您将有一个方法将传入的 int 划分为子数字。因此,在这种情况下,您将查看十个值并将其与 post 值结合起来。

    2 = Second
    
    22 - Twenty-second 
    
    52 - Fifty-second
    

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 2017-07-11
      • 2018-05-02
      • 1970-01-01
      • 2013-04-15
      • 2014-01-08
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多