Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > java.lang.ArrayIndexOutOfBoundsException


Автор: LoDark 16.6.2011, 11:40
Помогите пожалуйста:

Код

    private void Password(String s)
    {
        byte abyte0[] = null;
        byte abyte1[] = {97, 98, 99, 100, 101, 102};
        abyte0 = s.getBytes();
 
        for(int i = 0; i < 6; i++)
            if(abyte0[i] != abyte1[i] || s.length() != 6) //<= На этой строке выскакивает java.lang.ArrayIndexOutOfBoundsException
                destroyApp(true);
    }


Что не так?
P.S. пароль - abcdef

Автор: Mabramyan 16.6.2011, 13:06
abyte0 получается короче чем 6 

s.length() != 6 
поставьте перед циклом

Автор: LoDark 16.6.2011, 13:32
Mabramyan

Код

        if (s.length() != 6)
        {
            for (int i = 0; i < 6; i++)
            {
                if (abyte0[i] != abyte1[i])
                {
                    destroyApp(true);
                }
            }
        }


Так?

Автор: Mabramyan 16.6.2011, 14:33
if (s.length() != 6) нет
if (s.length() == 6)  да

а вообще я бы сделал:

Код


private void Password(String s)
     if (!Arrays.equals(abyte1, s.getBytes()) {
           destroyApp(true);
     }
}






Автор: oxigen 16.6.2011, 17:28
Так как вопрос находится в теме  Java ME (J2ME), то возможно класс Arrays не доступен.

Автор: LoDark 16.6.2011, 21:38
Я так и не услышал нормального ответа  smile 

Автор: oxigen 17.6.2011, 10:57
Код

private void Password(String s) {
        if(s == null) {
            destroyApp(true);
            return;
        }
        byte []abyte1 = {97, 98, 99, 100, 101, 102};
        byte []abyte0 = s.getBytes();
        
        if(abyte0.length != abyte1.length) {
            destroyApp(true); //длина введенного пароля не совпала с заданым
        } else {
            for(int i = 0; i < abyte0.length; i++)
                if(abyte0[i] != abyte1[i] || s.length() != 6) 
                    destroyApp(true);
        }
    }

Автор: LoDark 17.6.2011, 16:33
oxigen, спасибо  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)