2012-01-18 2 views
2

Я хотел бы знать, как правильно ссылаться на массив Массив байтовМассив байт []

У меня есть некоторые примитивные типы данных, которые говорят пару мегабайт каждый

byte[] data1, data2, data3, data4 ... ,data10; 

data1 = ..(something 2MB big) 
data2 = ..(something 2MB big) 
data3 = ..(something 2MB big) 
. 
. 
data10 = ..(something 2MB big) 

Я хочу, чтобы организовать эти 10 байт [] 's в массив (это где мой код идет не так)

private byte[] arrayofdatas[]; 
arrayofdatas[1] = data1; 
arrayofdatas[2] = data2; 
. 
. 
etc. 

Я попытался это, но когда линия arrayofdatas [1] = data1 идет, я получаю исключение нулевого указателя Пожалуйста, помогите мне очистить код, было очень сложно найти эту проблему.

P.S. Мне нужны типы данных, чтобы оставаться в виде байта []. Пожалуйста, не конвертируйте их в строки.

Редактировать: Мне нужна переменная arrayofdatas для переменной поля. У меня проблемы, потому что я не знаю, как объявить его как поле. Все ваши ответы сделали его локальным и использовали «новый». Другое дело. Я сделал «10» некое количество байт [], которое я хочу. В конечном итоге я хочу, чтобы этот массив был неограниченным. Есть ли способ добавить к массиву, поскольку добавлено больше байтов [] s, так что в будущем может быть arrayofdata [500], без необходимости объявлять размер в начале?

ответ

4
private byte[][] arrayofdatas = new byte[10][]; 

И вы можете использовать их в вашем методе.

arrayofdatas[0] = data1; 
arrayofdatas[1] = data2; 
. 
. 
etc. 

Обратите внимание, что вы должны объявить arrayofdatas как поле класса. Или, если вы хотите объявить его в методе, вы должны удалить модификатор private.

+0

Если его 10 массивов данных, и вы начинаете с индексом 1 в arrayofdatas, вы должны выделить 11 массивов данных: 'новый байт [11] [];' –

+0

да. Я починил это. – shift66

1
byte data[][] = new byte[10][]; 

data[0]= ..(something 2MB big) 

т.д.

0

Если я правильно вас понимаю, вам нужна 2-мерная матрица.

byte[][] arr2d = new byte[][]; 
byte [] data1, data2, ....; 
arr2d[0] = data1; 
arr2d[1] = data2; 
///.............. 

Надеюсь, это поможет, хотя ваш вопрос, вероятно, сигнализирует мне, что ваш дизайн не так идеален. Я бы рекомендовал вам разместить здесь описание вашей задачи и то, как вы ее проектируете. Вероятно, ребята могут порекомендовать вам, как улучшить свой дизайн.

0

Почему бы не сделать что-то вроде этого:

byte[][] data = new byte[10][]; 
for(int i=0; i<10; i++) 
{ 
    byte[i] = ... //fill your data here; 
} 
3

Ваш массив не выделено должным образом. Если вам нужна двумерная матрица, используйте:

byte[][] arrayofdatas = new byte[10][]; 
arrayofdatas[1] = data1; 
arrayofdatas[2] = data2; 
. 
. 
etc. 
0

Вы пробовали многомерные массивы? Я помню, как их использовали для String. Если они сделали для String ... они должны для любого другого типа данных, если вы назначаете данные байта :)

Это должно помочь.

byte[][] arrayofdatas = new byte[10][]; 
arrayofdatas[1] = what you wanted for data1 ..(something 2MB big) 
+0

Хе-хе ... Я уже вижу много ответов: P – rajugaadu

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