我正在尝试创建一个方法,你可以向该方法发送一个简单的字符串,然后使用for循环逐个字符地将其拆分,将数组“alpha”中的每个字符转换为其在“beta”中等价的值,然后使用StringBuilder将它们全部串联起来并作为“output”返回,如下所示:
代码: 我已经简化了整个类和所有变量名称以提高可读性。
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)
返回的内容,你可能会感到惊讶。 - njzk2