per esempio se ho come input
char a[]={b,u,o,n,g,i,o,r,n,o}
l output deve esser
char[] b ={b,u,o,n,g,i,r}
consigli???
per esempio se ho come input
char a[]={b,u,o,n,g,i,o,r,n,o}
l output deve esser
char[] b ={b,u,o,n,g,i,r}
consigli???
Bastano un paio di for annidati.
Il più esterno scorre il tuo array a.
Quello interno controlla se l'elemento corrente di a è presente in b: se non è lo aggiunge, altrimenti passa avanti.
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
forse non mi hai capito....l array da controllare è uno il secondo è il risultato che devo avere,a partire dall array a devo ricavare b
Mi sa che tu non hai capito il suggerimento ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
anche questo può esser vero....perciò perche non mi illumini?
È molto semplice: prima di partire ti crei un array (grande quanto quello iniziale) vuoto, poi inizi a scorrere il primo array. Se l’elemento che incontri è già nel nuovo array significa che si tratta di un carattere doppio e salti al successivo. Altrimenti si tratta di un carattere nuovo e lo metti nel nuovo array. Alla fine ti troverai in questo nuovo array tutti gli elementi del primo, esclusi i doppioni... Mi pare abbastanza chiaro
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
usi due for e due array. Nel secondo array che sarà quello risultante aggiungi il primo carattere e poi inizi i confronti con l'if all'interno dei cicli, se diverso lo aggiungi all'array risultante altrimenti no.
Però adesso il codice fallo tu
grazie per il chiarimento...quindi dovrei fare cosi:
char a[]={b,u,o,n,g,i,o,r,n,o};
char b[]=new char[a.lenght];
for(int i=0;i<a.lenght;i++)
{
for(int h=0;h<b.lenght;h++)
{
if(a[i]!=a[i+1])
b[h]=a[i];
}
}
A parte che in un array di char i caratteri "letterali" vanno quotati con apici singoli (come l'hai scritto tu quei b, u, o ... dovrebbero essere o "variabili" o "costanti" definite in precedenza).
A parte che l'array di output b ha la stessa dimensione di quello di input (quindi potenzialmente lasci char nulli al fondo), il che potrebbe andarti bene o no a seconda di cosa vuoi ottenere o fare dopo su b.
A parte che lenght si scrive length
...
No, quello che hai fatto non ha granché senso per quanto dici di voler fare.
Per ogni carattere in a (ripeto, banale scansione lineare di a): devi verificare se il carattere è già stato trovato in precedenza e solo se non lo trovi allora puoi inserire "logicamente" il carattere in b (per "logicamente" intendo che devi tenere un indice in b che rappresenta sia il numero "logico" di caratteri nell'array, sia allo stesso tempo l'indice per inserire un nuovo char).
Questo lo puoi fare in almeno 2 modi:
- fai una scansione innestata su a da 0 fino all'indice precedente di quello su cui stai operando col for esterno.
- fai una scansione innestata su b da 0 fino all'ultimo elemento "logico" nell'array (non la lunghezza fisica dell'array).
In ogni caso, solo se non lo trovi puoi inserire il char in b e questo lo puoi sapere solo dopo che il ciclo innestato è terminato! Se conosci l'istruzione continue con label (etichetta), c'è una soluzione bella e pulita che non richiede l'uso di una variabile di flag.
Ultima modifica di andbin; 06-10-2013 a 20:53
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
andbin ...gli errori che mi hai corretto sono stati dati dalla velocità di scrittura..so che i caratteri vanno tra singoli apici e che si scrive length.....lo avevo capito che devo scansionare l array e solo se trovo il carattere lo aggiungo a b,io voglio sapere come "bip"devo fare a controlllare se il carattere è gia stato trovato nella scansione o no.