Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Daréios89 on 02-04-2009, 21:24:11



Title: Un altro esercizio che non mi funziona
Post by: Daréios89 on 02-04-2009, 21:24:11
Non fa affatto quello che dovrebbe fare, ma ristampa la matrice di partenza....

Code:
/*Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata S di stringhe ed un
byte j, e restituisca una matrice S’ copia di S in cui in ogni stringa della colonna j-esima ogni
occorrenza del carattere ‘g’ è sostituita da un carattere ‘*’.  */

class Ex21
{
public static void main(String[]args)
{
byte j=2;
String [][] S={{"lecce", "ggg","sempre"},
                    {"forse","dubbioso","permaloso"},
    {"generico","stop","dimentica"}};
    String[][] S1=prendimatrice(S,j);
    for(int rg=0; rg<S.length; rg++)
    for(int col=0; col<S[rg].length; col++)
    System.out.print(S1[rg][col]+" ");
   
 
}




   public static String[][] prendimatrice(String[][]S, byte j)
{

int cont=0;

String [][]S1=new String[S.length][];
for(int r=0; r<S.length; r++)
{

S1[r]=new String[S[r].length];

for(int k=0; k<S[r].length; k++)
{
S1[r][k]=S[r][k];

}
}
for(int r1=0; r1<S1.length; r1++)
        {

while(cont!=S1[r1][j].length()-1)
{
if(j<S[r1].length)
if(S1[r1][j].charAt(cont)=='g')
S1[r1][j]+='*';


cont++;
}
cont=0;
}

return S1;

}
               


}


Title: Re:Un altro esercizio che non mi funziona
Post by: Eleirgab on 02-04-2009, 23:04:16
Non ho guardato con attenzione il codice, ma da una prima sbirciatina credo che il problema stia nel fatto che j lo inizializzi a 2, ma la numerazione degli indici degli array parte da 0, quindi non stai modificando la colonna 2, ma la colonna 3 (di indice 2).

Code:
Pertanto non modifica la voce "ggg", che si trova in posizione [0][1] e non [0][2].

Spero di essere stato chiaro e di avere ragione  :-OK

Ci si becca a lezione  :-ciao


Title: Re:Un altro esercizio che non mi funziona
Post by: Daréios89 on 02-04-2009, 23:10:50
Giustissimo, grande....ora c'è solo un problema, che per come ho scritto io, non mi sostituisce le g, ma concatena gli asterischi dopo le g...come caspita si sostituiscono???
Grazie mille per l'attenzione.


Title: Re:Un altro esercizio che non mi funziona
Post by: Eleirgab on 03-04-2009, 12:45:34
Prova così:
Code:
while(cont!=S1[r1][j].length()-1)
{
String temp="";
if(j<S[r1].length)
if(S1[r1][j].charAt(cont)=='g')
temp+='*';
else
temp+=S1[r1][j].charAt(cont);
cont++;
}
S1[r1][j] = temp;
cont=0;
}
Devi creare una nuova stringa con i giusti caratteri e assegnarla ad S1