Se että matriisi onkin vain taulukko viitteistä riveihin, mahdollistaa edellä olleen mielivaltaisen kokoisen matriisin käyttämisen aliohjelman parametrina. Matriisin rivit voidaan luoda myös erikseen:
mat-+ mat[0] +---------- mat[0][2]
| | |
| |
v +--->+---------------+
+---+ +---->| 1 | 2 | 3 | 4 | r0
0 | o-+---+ +---------------+
+---| +---------------+
1 | o-+-------->| 5 | 6 | 7 | 8 | r1
+---| +---------------+
2 | o-+---+ +---------------+
+---+ +---->| 9 | 0 | 1 | 2 | r2
+---------------+
/**
* Matriisi kasattuna irrallisista riveistä
* @author Vesa Lappalainen
* @version 1.0, 04.03.2003
*/
public class Mat3 {
public static double alkioiden_summa(double mat[][],int riveja, int sarakkeita) {
int riv = Math.min(riveja,mat.length);
double summa = 0;
for (int i=0; i<riv; i++) {
int sar = Math.min(sarakkeita,mat[i].length);
for (int j=0; j<sar; j++)
summa += mat[i][j];
}
return summa;
}
public static void main(String[] args) {
double s1,s2;
double r0[] = {1,2,3,4}, r1[] = {5,6,7,8}, r2[] = {9,0,1,2};
double mat[][] = {r0,r1,r2};
s1 = alkioiden_summa(mat,2,3);
s2 = alkioiden_summa(mat,3,4);
System.out.println("Summat on " + s1 + " ja " + s2);
}
}
Javan menettelyssä on vielä se etu, ettei kaikkien rivien välttämättä tarvitsisi edes olla yhtä pitkiä. Harvassa matriisissa osa osoittimista voisi olla jopa null- osoittimia, mikäli rivillä ei ole alkioita (aliohjelman pitäisi tietysti tarkistaa tämä). Oikeasti rivit usein vielä luotaisiin dynaamisesti ajonaikana tarvittavan pituisina.