Originariamente inviato da andbin
Gli passi M[riga]. Fai un ciclo sulle righe della matrice, ovviamente.
ho modificato il codice,le correzioni che mi hai segnalato, sono giustissime ed infatti le farò non appena avrò completato i metodi.
Ho modificato il codice, passando al metodo comprimiArray le M[riga]; la scansione viene eseguita ma in output ricevo solo il vettore di interi della prima riga:
codice:
public class GestioneImmagini {
public static int[] comprimiMatrice(boolean[][]M){
int[] v= new int[2];
int[] v2=new int[M.length*M[0].length];
v[0]=M.length;
v[1]=M[0].length;
for(int i=0;i<M.length;i++)
v2=comprimiArray(M[i]);
return v2;
}
public static int[] comprimiArray(boolean[] B1){
int[] V1=new int[B1.length];
int bianchi=0;
int neri=0;
int i = 0;
int l = 0;
boolean cambiato = false;
while(i < B1.length)
{
if(i > 0 && B1[i] != B1[i-1]) // se l'elemento è cambiato rispetto al precedente
{
System.out.println("i = " + i + " rilevato cambiamento");
if(B1[i-1] == true) //neri
{
System.out.println("Gli ultimi elementi erano neri");
V1[l++] = neri;
neri=0;
}
else //bianchi
{
System.out.println("Gli ultimi elementi erano bianchi");
V1[l++] = bianchi * -1;
bianchi=0;
}
}
if(B1[i] == false)
{
System.out.println("L'elemento corrente e' un bianco (i = " + i + ")");
bianchi++;
}
else
{
System.out.println("L'elemento corrente e' un nero (i = " + i + ")");
neri++;
}
i++;
if(i == B1.length) // se l'elemento è cambiato rispetto al precedente
{
System.out.println("i = " + i + " rilevato cambiamento");
if(B1[i-1] == true) //neri
{
System.out.println("Gli ultimi elementi erano neri");
V1[l++] = neri;
}
else //bianchi
{
System.out.println("Gli ultimi elementi erano bianchi");
V1[l++] = bianchi * -1;
}
}
}
return V1;
}
public static void main (String[] args){
int[] V1;
int[] v2;
boolean[][] M={{false,false,true,false,false},
{false,true,true,true,false},
{true,true,true,true,true},
{false,true,true,true,false},
{false,false,true,false,false}};
boolean[] B1={false,false,true,false,false};
/*V1=comprimiArray(B1);
for(int i=0;i<V1.length;i++)
System.out.println(V1[i]);
*/
v2=comprimiMatrice(M);
for(int i=0;i<v2.length;i++)
System.out.println(v2[i]);
}
}
Questo è l'output
codice:
L'elemento corrente e' un bianco (i = 0)
L'elemento corrente e' un bianco (i = 1)
i = 2 rilevato cambiamento
Gli ultimi elementi erano bianchi
L'elemento corrente e' un nero (i = 2)
i = 3 rilevato cambiamento
Gli ultimi elementi erano neri
L'elemento corrente e' un bianco (i = 3)
L'elemento corrente e' un bianco (i = 4)
i = 5 rilevato cambiamento
Gli ultimi elementi erano bianchi
L'elemento corrente e' un bianco (i = 0)
i = 1 rilevato cambiamento
Gli ultimi elementi erano bianchi
L'elemento corrente e' un nero (i = 1)
L'elemento corrente e' un nero (i = 2)
L'elemento corrente e' un nero (i = 3)
i = 4 rilevato cambiamento
Gli ultimi elementi erano neri
L'elemento corrente e' un bianco (i = 4)
i = 5 rilevato cambiamento
Gli ultimi elementi erano bianchi
L'elemento corrente e' un nero (i = 0)
L'elemento corrente e' un nero (i = 1)
L'elemento corrente e' un nero (i = 2)
L'elemento corrente e' un nero (i = 3)
L'elemento corrente e' un nero (i = 4)
i = 5 rilevato cambiamento
Gli ultimi elementi erano neri
L'elemento corrente e' un bianco (i = 0)
i = 1 rilevato cambiamento
Gli ultimi elementi erano bianchi
L'elemento corrente e' un nero (i = 1)
L'elemento corrente e' un nero (i = 2)
L'elemento corrente e' un nero (i = 3)
i = 4 rilevato cambiamento
Gli ultimi elementi erano neri
L'elemento corrente e' un bianco (i = 4)
i = 5 rilevato cambiamento
Gli ultimi elementi erano bianchi
L'elemento corrente e' un bianco (i = 0)
L'elemento corrente e' un bianco (i = 1)
i = 2 rilevato cambiamento
Gli ultimi elementi erano bianchi
L'elemento corrente e' un nero (i = 2)
i = 3 rilevato cambiamento
Gli ultimi elementi erano neri
L'elemento corrente e' un bianco (i = 3)
L'elemento corrente e' un bianco (i = 4)
i = 5 rilevato cambiamento
Gli ultimi elementi erano bianchi
-2
1
-2
0
0