我正在开发一个用户将使用Voice进行交互的应用程序。每当用户说第一,第二,第三等时......我需要将字符串“first”转换为int 1,将字符串“second”转换为int 2.
到目前为止,我发现的是(Java-Android How to convert letters in a string to specified number),将字符串中的每个字母转换为相应的数字,然后返回一些数字。但我不是我需要的。我真的被卡住了。任何帮助将不胜感激。
答案 0 :(得分:3)
没有确切的方法可以这样做。但是为了完成功能,你可以使用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
}
答案 1 :(得分:1)
如果您定义一个包含所有字符串基数的列表,那么您可以使用 indexOf 并获取您要查找的值,但请仔细考虑null元素: 要么将空基数元素添加到列表中,要么将1添加到索引值
List<String> cardinal = Arrays.asList("first", "second", "third", .. etc);
System.out.println(cardinal.indexOf("first") + 1);
答案 2 :(得分:1)
您需要拆分值receive,以分析每个步骤。由于您的价值不高,您需要为每个数字创建一个地图......这太过分了。
所以只需创建类似的东西:
{ "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 :(得分:0)
我猜你至少有某种方法来获取字符串值?
如果数字相对较小(~10),则哈希映射可以执行此操作。只需手动保存它们并通过String查找它们。
HashMap<String, Integer>
如果你有一个更大的列表(~100),你将有一个方法将传入的int分成子数。因此,在这种情况下,您将查看十个值并将其与post值组合。
2 = Second
22 - Twenty-second
52 - Fifty-second