2016-02-04 7 views
0

У меня есть следующий код, чтобы пройти через bytebuffer полный chars в Java и построить string.Java абонент может найти нулевой символ в ByteBuffer вернулся из класса, но не тогда, когда перебирая в ByteBuffer в классе

 StringBuilder actualString = new StringBuilder(); 

     for(int i = 0; i < length; i++) 
     { 
      if((char)bbuf.get(i) != '\0'); 
      { 
       actualString.append((char)bbuf.get(i)); 
       System.out.println("ascii code is " + bbuf.get(i)); 
      } 
     } 

код работает правильно и останавливается на \0 (нулевой символ), когда возникает, когда bytebuffer был получил с помощью вызывающего абонента к классу и итерация, где функция Вызывающий содержится.

, например

new bufclass = bufclass 

buffclass.getbytebuffer 

run code from above 

Однако, когда я ставлю этот код после bytebuffer производится и выделяется в классе, где bytebuffer не содержится его никогда не останавливается на \0 характер.

пример того, как это сделано будет

create bytebuffer and allocate bytebuffer 

run code to iterate from above 

Почему мой код работает при переборе через bytebuffer с помощью вызывающего абонента к классу, чтобы получить bytebuffer, но не работает, когда код был добавлен класс, содержащий bytebuffer?

Отметим, что это мои результаты при печати кодов символов ASCII, и да, я попробовал if the byte is equal to 0, который тоже не работал.

ascii code is 116 
ascii code is 101 
ascii code is 115 
ascii code is 116 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
ascii code is 0 
+2

Пожалуйста, попробуйте перефразировать ваш вопрос. Простые предложения, предметный объект-глагол. Я читал ваш вопрос, как три раза, и до сих пор не знаю, о чем вы говорите. – GhostCat

+0

есть вызывающий, который содержит код выше, bytebuffer получен с использованием вызывающего абонента и работает правильно. код был помещен в класс, в котором содержится байтовый буфер, и код не работает, когда он используется с bytebuffer. – jgr208

+0

Никогда не помещайте больше комментариев в комментарии. Обновите вопрос. – GhostCat

ответ

1

У вас есть ; после вашего если заявление:

if((char)bbuf.get(i) != '\0'); 

Это функционально эквивалентно

if((char)bbuf.get(i) != '\0') { 
} 

Итак, удалить, что ; и вы будете хорошо идти ,

+0

о бог я идиот. хаха спасибо. я проходил все, что было не так, и в итоге я случайно положил полутень. – jgr208