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++

Другие вопросы по тегам