2009-03-11 2 views

ответ

0

Вы можете вызвать метод getArray() в матрице, чтобы получить двойной [] [], представляющий элементы.
Затем вы можете пройти через этот массив, чтобы отображать любые столбцы/строки/элементы, которые вы хотите.

Дополнительную информацию см. На сайте API.

1

Самый простой способ, вероятно, был бы в transpose матрице, а затем распечатать каждую строку. Принимая участие в примере из API:

double[][] vals = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}}; 
Matrix a = new Matrix(vals); 
Matrix aTransposed = a.transpose(); 
double[][] valsTransposed = aTransposed.getArray(); 

// now loop through the rows of valsTransposed to print 
for(int i = 0; i < valsTransposed.length; i++) { 
    for(int j = 0; j < valsTransposed[i].length; j++) {   
     System.out.print(" " + valsTransposed[i][j]); 
    } 
} 

Как duffymo отметил в комментариях, это бы быть более эффективным, чтобы обойти транспозиции и просто написать вложенную для петли для печати вниз колонка вместо всей строки. Если вам нужно напечатать оба способа, которые приведут к удвоению кода. Это довольно распространенный компромисс (скорость для размера кода), который я оставляю вам решать.

+0

как распечатать каждую строку? – user64480

+0

Я добавил код для иллюстрации. –

+0

Итак, у нас есть 2 матрицы здесь, a и aTransposed? Несомненно, что это «работает», но это большая цена памяти, чтобы платить за печать столбцов. В этом примере тривиально, но любая матрица для реальной проблемы сильно пострадает. – duffymo

0
public static String strung(Matrix m) { 
    StringBuffer sb = new StringBuffer(); 
    for (int r = 0; r < m.getRowDimension(); ++ r) { 
     for (int c = 0; c < m.getColumnDimension(); ++c) 
      sb.append(m.get(r, c)).append("\t"); 
     sb.append("\n"); 
    } 
    return sb.toString(); 
} 

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

  • Нет связанных вопросов^_^