PDA

View Full Version : [JAVA] Inizializzare matrice a 3 dimensioni


soeca
16-06-2009, 15:32
Ragazzi oggi ho fatto un esame di programmazione java e sono molto perplesso su uno degli esercizi inerenti alla costruzione di un metodo il quale diceva questo:
Scrivere un metodo che prenda in input 3 cubi di float delle stesse dimensioni e restituisca 1 se il valore massimo assoluto si trova nel primo cubo; 2 se il valore massimo si trova nel secondo cubo; 3 se si trova nel terzo.
E io ho scritto:

public class esercizioesame9
{
public static float metodo ( float [][][] a, float [][][]b ,float [][][]c )
{
float max=a[0][0][0];
float max1=b[0][0][0];
float max2=c[0][0][0];
for(int i=0;i<a.length;i++)
for(int j=0;j<a[0].length;j++)
for(int s=0;s<a[i].length;s++)
{
if(a[i][j][s]>max)
max=a[i][j][s];
if(b[i][j][s]>max1)
max1=b[i][j][s];
if(c[i][j][s]>max2)
max2=c[i][j][s];
}
if(max>max1 && max>max2)
return 1;
if(max1>max && max1>max2)
return 2;
if(max2>max && max2>max1)
return 3;
return 0;
}
}

Sinceramente a lezione non abbiamo mai trattato array con più di due dimensioni per questo sono tentennante nel dire che questa mia soluzione sia corretta(anche perchè non so come si inizializzano gli array a 3dimensioni quindi non riesco a fare il main).Qualcuno sarebbe così gentile da aiutarmi?

PGI-Bis
16-06-2009, 16:11
L'output è conforme alle richieste. Sono "sospette" le condizioni dei cicli- Funziona perchè la precondizione è che siano dei cubi ergo a.length = a[0].length = a[i].length ma mettere lì un a.length seguito da a[0].length seguito da a[i].length fa un po' impressione. Mi aspetterei:

a.length
a[i].length
a[i][j].length

o tre volte la stessa cosa

a.length
a.length
a.length

Per l'inizializzazione tenendo conto che parliamo di un array di N componenti ognuno dei quali è un array di N componenti, ognuno dei quali è un array di N interi, abbiamo:

int[][][] cube = {
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
{ { 1, 2, 3 },{ 1, 2, 3 },{ 1, 2, 3 } },
};

soeca
16-06-2009, 16:31
Quindi praticamente mi stai dicendo che sono passato?!!!:D No perchè gli altri esercizi li ho verificati provandoli ed eseguendoli qua a casa e non ho trovato alcun problema mancava solo questo!!!Quindi teoricamente io potrei avere anche array a n dimensioni frastagliati o non giusto??Wow chissa se le faremo queste cose in programmazione 2!!:D ma soprattutto chissà se ci occuperemo della parte di java dedicata al 3D.Comunque grazie mille per l'aiuto.Sei stato gentilissimo.