StringIndexOutOfBoundsException в java getText()
Я сравню алфавит с введенной вами строкой.
Я буду действовать следующим образом, когда строка входных символов соответствует строке буквенных символов.
Я не могу понять, почему возникает StringIndexOutOfBoundsException.
В чем проблема?
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int vk_1 = t1.getText().length();
Set chk = new LinkedHashSet();
for(i=0;i<vk_1;i++) {
chk.add(t1.getText().toLowerCase().charAt(i));
}
String result = Arrays.toString(chk.toArray()).replace("[", "").replace(",", "").replace("]", "");
t2.setText(result.replaceAll("\\p{Z}", ""));
if(t1.getText().equals("")) {
t2.setText("NO KEY");
}
}
});
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = t2.getText(); // aple
char p[] = {'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'};
char c[] = new char[s.length()];
for(i=0;i<s.length();i++) {
for(j=1;j<=26;i++) {
if(p[j]==s.charAt(i)) {
continue;
}
}
System.out.println(p[j]);
}
if(t2.getText().equals("")) t3.setText("no key");
}
});
1 ответ
Массивы Java основаны на нуле, поэтому ваш цикл должен начинаться с индекса 0 и выполняться до длины-1.
for(j=0;j<26;j++) {
Лучше использовать p.length вместо фиксированного значения 26:
for(j=0;j<p.length;j++) {
Вторая проблема - вы используете i++
вместо j++