2016-03-23 4 views
-1

У меня есть двумерный массив двойников, называемый imgMatrix, и я пытаюсь создать новый двухмерный массив целых чисел 1 или 0 в зависимости от значений удвоений в imgMatrix (значение < = 0.5 делает 0 в новом массиве, значение> 0,5 делает 1 в новом массиве).Замена значений двумерного массива

Вот код, который я до сих пор:

int[][] newMatrix = new int[imgMatrix.length][]; 
for (a=0; a <= imgMatrix.length; a++) { 
    for (b=0; b <= imgMatrix[a].length; b++) { 
     for (c=0; c <= imgMatrix[a].length; c++) { 
      if (imgMatrix[a][c] <= 0) { 
       newMatrix[a][c] = 0; 
      } 
      else { 
       newMatrix[a][c] = 1; 
      } 
     } 
    } 
} 

Очевидно что-то не так. Может ли кто-нибудь помочь мне исправить это?

+2

Вы собираетесь бежать от конца ваших массивов, использование ' azurefrog

+3

Вы говорите «очевидно» ... но что вы считаете неправильным? Обязательно сообщите нам, какие результаты вы получаете, и то, что ВЫ ИСПОЛЬЗУЕТЕ, чтобы получить определенный ввод! –

+2

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

ответ

1

сделать следующие изменения в код,

int[][] newMatrix = new int[imgMatrix.length][]; 
    for (int a=0; a < imgMatrix.length; a++) { // remove = from older code 

     newMatrix[a] = new int[imgMatrix[a].length]; 

     for (int b=0; b < imgMatrix[a].length; b++) { // remove = from older code 
      //remove : for (c=0; c <= imgMatrix[a].length; c++) { 
       if (imgMatrix[a][b] <= 0.5) { 
        newMatrix[a][b] = 0; 
       } 
       else { 
        newMatrix[a][b] = 1; 
       } 
     // remove : } 
     } 
    }