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.