2013-03-12 3 views
0

У меня небольшая проблема. Я беру каждый элемент в разреженной матрице и помещаю ее в 1-й массив с именем «b []». Например:Значения глобальных значений массива Java до 0

00070 
00400 
02000 
00050 
10000 

Становится: 0007000400020000005010000

Код ниже работает в том, что в данной точке в пределах самого внутреннего контура Ь [] имеет правильное значение, как показано ниже. Моя проблема заключается в том, что за пределами самого внутреннего контура Ь [] имеет значение:

b[] = 0000000000000000000000000 

Я не могу понять, что я пропавшими без вести. Следует также отметить, что b [] определено глобально и инстанцируется внутри конструктора этого класса. Проблема заключается в том, что я пытаюсь использовать этот 1d массив в другой функции, и каждый элемент в массиве устанавливается в 0.

public void return1dSequence() { 

    // Create paired objects (Pair class). 

    for (int i = 0; i < a.length; i++) { 

     for(int j = 0; j < a[i].length; j++) { 
      this.b[i] = a[i][j]; 

      // System.out.print(b[i]); 
      if (this.b[i] == 0) { 
       pos += 1; 
      } else { 
       value = this.b[i]; 
       ml.add(new Pair(pos, value)); 
       pos += 1; 
      } 
     } 
    } 
} 

Заранее спасибо за любые ответы,

Андре.

+0

Проблема, скорее всего, в коде вы еще не показали ... – assylias

+1

Можете ли вы поделиться код, который создает и инициализирует б []? – Farlan

+1

Как объявляется эта переменная b []? Можете ли вы показать нам всю программу или, по крайней мере, весь соответствующий код? Кроме того, как это выполняется? –

ответ

0

Вы заполнение b[i] для индексов я ваш внешнего контура ...

Каждый раз во внутреннем цикле, вы перезаписать b[i] со значением a[i][j].

Последнее значение a[i] массив всегда равен нулю.

Вот почему ваш массив b равен нулю.

То, что вы хотите, вероятно:

int counter = 0; 
for (int i = 0; i < a.length; i++) { 
    for(int j = 0; j < a[i].length; j++) { 
     b[counter] = a[i][j]; 
     counter++; 
    } 
} 
0

Первое, что я хочу упомянуть, это то, что вы не должны объявлять свои переменные (a, b ....) static. Возможно, вы получили удар по среднему побочному эффекту после создания двух экземпляров Sparse. Постарайтесь определить их как нестатические и сообщить, если они все еще не работают.

С наилучшими пожеланиями Томас

+0

Да, Томас, даже если определяемый как нестатический, он все еще теряет содержимое. С уважением, Andre – drizzy

0

Попробуйте удалить это из каждого вызова б [], если вы хотите получить доступ к B [], как статический.

Кроме того, вы уверены, что вы не переписываете b [] в другом месте кода? Это, скорее всего, проблема из-за публичной статической декларации. Попытайтесь сделать его приватным и удалить статику и посмотреть, есть ли у вас проблема.

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