2011-12-18 4 views
0

мне нужно преобразовать значение base64 в массив строк так просто я пишу это:Base64 расшифровывает Застрял

String s[] = new String[partyname.length]; 
     for(int i=0;i<=partyname.length;i++) 
     { 
     byte[] bytes = Base64.decode(partyname[i], Base64.DEFAULT); 
       String string = new String(bytes, "UTF-8"); 
       s[i] = string; 
       System.out.println("string is ::" + string+s[i]); 


     } 

, но я не знаю, почему это поднять нулевую ошибку указателя на s[i] = string; линии, если я удалить его, то работает нормально поэтому, пожалуйста, помогите мне.

+1

s является нулевым – Jimmy

+1

Учитывая, что у вас есть 2.8k репы, я думаю, что решение здесь, чтобы получить больше остальные (из первой строки?). – Jake

+0

также вы завершаете цикл на partyname.length - поэтому разыменование paryname [i] завершится неудачно на последней итерации – Jimmy

ответ

1

Вам нужно создать массив строк, что s ссылки первый. У вас есть

String[] s = null; 

Так что, когда вы пытаетесь использовать s, такие как

s[i] = string; 

Тогда s еще пустой, и пытается получить я элемент s дает вам null указатель.

Из остальной части кода, я думаю, что вы хотите массив строк с одинаковым числом элементов, как имя партии, так что вам нужно

String[] s = new String[partyname.length]; 
+0

точная проблема, которую вы улавливаете +1 –

6

Потому что s - null.

Вы, вероятно, хотите, чтобы это как первая линия:

String[] s = new String[partyname.length]; 
+0

@ Dr.nik: Вы удалили что? –

+0

+1 за хорошую помощь –

1

Как уже говорилось, с пустой, я хочу добавить еще одно соображение :
для цикла должна быть: for(int i=0;i<partyname.length;i++) вместо for(int i=0;i<=partyname.length;i++)

+1

Хорошая уловка. Пропустил это, отвечая на исходный вопрос. –

+0

Спасибо, это не проблема, но она будет следующей. –

Смежные вопросы