【发布时间】:2017-08-25 13:25:47
【问题描述】:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String output = "";
char[] input = textArea.getText().toUpperCase().toCharArray();
int index;
for (int i = 0; i < input.length; i++) {
if(input[i] != ' ') {
index = Arrays.asList(russian).indexOf(input[i]);
output += codeMorse[index] + " ";
}
}
textArea.setText(output);
button.setText("Конвертировано!");
}
});
//数组
char[] russian = new char[]{'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И',
'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С',
'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ы', 'Ь',//41
'Э', 'Ю', 'Я', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '0' };
String[] codeMorse = new String[] { "*–", "–***", "*––", "––*",
"–**", "*", "***–", "––**",
"**", "*–––", "–*–", "*–**", //41
"––", "–*", "–––", "*––*",
"*–*", "***", "–", "**–",
"**–*", "****", "–*–*",
"–––*", "––––", "−−*−",
"−*−−", "−**−", "**−**",
"**−−", "*−*−", "*−−−−",
"**−−−", "***−−", "****−",
"*****", "−****", "−−***",
"−−−**", "−−−−*", "−−−−−" };
//输入值为“привет”
此代码抛出 java.lang.ArrayIndexOutOfBoundsException: -1 异常。两个数组长度相同。我认为它是由于 indexOf 而引发的,但我不知道如何更改它。
【问题讨论】:
-
这表示
input[i]不在russian数组中。你没有表现出两者的价值,所以很难说问题是什么。 -
但它在..(
-
要么 Java 是反复无常的,是在骗你;或者真的不是。请显示
russian数组的定义。我的猜测是russian是char[](在这种情况下Arrays.asList(russian)是List<char[]>,它从不包含char;或者它是String[],在这种情况下它不包含char要么。 -
你能发布完整的堆栈日志吗?
-
您应该编辑
russian数组和堆栈跟踪进入问题本身,而不是将它们放在 cmets 中。
标签: java arrays string indexof