Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [JAVA] dato un array di caratteri devo eliminare tutti i caratteri doppi...

    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???

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    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

  3. #3
    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

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sa che tu non hai capito il suggerimento ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    anche questo può esser vero....perciò perche non mi illumini?

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    È 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

  7. #7
    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

  8. #8
    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];
    }
    }

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da rossonero922 Visualizza il messaggio
    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.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.