【发布时间】:2016-02-17 05:07:26
【问题描述】:
所以我正在尝试创建一个方法,您可以将一个简单的字符串发送到该方法,然后在 for 循环中逐个字符地分解该字符串,数组“alpha”中的每个字符都转换为“beta”中的等效值,然后它们都使用 StringBuilder 连接起来并作为“输出”返回,如下所示:
代码: 我已经简化了整个类和所有变量名以提高可读性。
import java.util.Arrays;
public class Test {
private final char[] alpha = { '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'};
public String getAlpha(String input) {
StringBuilder output = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
int index;
if (Character.isLetter(c)) {
try {
index = Arrays.asList(alpha).indexOf(Character.toUpperCase(c));
System.out.println(c); //debug
System.out.println(index); //debug
//output.append(beta[index]); //gets the index and applies it to beta (unnecessary for this example)
} catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
} else {
output.append(c);
}
}
return output.toString();
}
public static void main(String[] args) {
Test test1 = new Test();
test1.getAlpha("Hello");
}
}
我遇到的问题是每个字符的索引始终导致 ArrayIndexOutOfBounds 异常,因为 indexOf 无法在数组“alpha”中找到等效字符。
我做错了吗?很明显,但我不明白什么/为什么它没有为任何字符获取任何索引。任何帮助将不胜感激。
输入:
"Hello"
输出: 调试
H
-1
e
-1
l
-1
l
-1
o
-1
【问题讨论】:
-
仔细查看
Arrays.asList(alpha)返回的内容。你可能会感到惊讶。