【发布时间】:2019-02-04 15:48:47
【问题描述】:
我有以下代码
String[] alphabet = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q","r", "s", "t", "u", "v", "w", "x", "y", "z"};
如果我这样做了
String str = "aa";
for(int i=0;i<str.length();i++) {
chars.add(Arrays.asList(alphabet).indexOf(str.charAt(i)));
}
字符中的值是
0 = -1
1 = -1
因为 Arrays.asList(alphabet).indexOf(str.charAt(i)) 返回的结果是 'a'97 而不是 "a" 因此它不匹配,因为返回 -1
我需要Arrays.asList(alphabet).indexOf(str.charAt(i)) 来返回“a”
这就是我认为charAt 返回的结果,它只是“a”而不是这个 'a' 97
还有其他选择吗?
【问题讨论】:
-
如果它返回 -1,这意味着
List不包含您要搜索的内容。您正在String列表中搜索char -
确定
Arrays.asList(alphabet).indexOf(str.charAt(i))正在返回“a”?它看起来更像-1 -
哦,
char是一个整数类型(有点),你可以用它做数学运算:str.charAt(i) - 'a'将为a返回零,为b返回 1,...在上面的代码中不需要数组/列表 - 或者例如'b' - 'a' == 1
标签: java arrays java-8 char indexof