Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    11

    operatore di DISUGUAGLIANZA fra caratteri Char?

    Devo strutturare un ciclo while, la cui condizione prevede che un determinato char preso da un vettore di char sia diverso da zero.
    So che '\u0000' è il char null.
    Che operatore di disuguaglianza posso usare?

    while(charTesto[j] <?> "\u0000" ) ?

    Oppure esiste la possibilità di fare un ciclo " WHILE NOT " o " UNTIL " ?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da cinco88
    Che operatore di disuguaglianza posso usare?

    while(charTesto[j] <?> "\u0000" ) ?
    L'operatore di disuguaglianza è 1 solo .... !=

    Comunque devi mettere il char literal tra apici singoli, non doppi (che diventerebbe una stringa):

    while(charTesto[j] != '\u0000' )

    Invece che '\u0000' puoi anche solo mettere 0
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    11

    Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da andbin
    L'operatore di disuguaglianza è 1 solo .... !=

    Comunque devi mettere il char literal tra apici singoli, non doppi (che diventerebbe una stringa):

    while(charTesto[j] != '\u0000' )

    Invece che '\u0000' puoi anche solo mettere 0
    Ti ringrazio Andbin, mi stai dando seriamente una mano...già che ci sei ti sfrutto ancora più sfacciatamente

    Se faccio partire il programma qui sotto (il System.out.println mi serve come verifica prima di procedere ), mi partono una sfilza di errori. Cosa c'è che non va?

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    String testo = jTextArea1.getText();
    char[] charTesto = testo.toCharArray();
    int g = charTesto.length;
    ArrayList<String> stringTesto = new ArrayList<String>();
    String parola = new String();


    int j = 0;
    while( charTesto[j] != '0' && j<=g-1)
    {
    parola.concat(Character.toString(charTesto[j])); // inserisco il carattere nella stringa

    if( charTesto[j+1] == '0' || j!=(g-1))
    {
    j=j+2; // se il carattere successivo è vuoto, salto di 2
    stringTesto.add(parola);
    parola = null;

    if(charTesto[j] == '0')
    {
    j=j+2; // se entrambi i caratteri successivi sono vuoti salto di 4 (2+2)

    }
    }
    else
    {
    j=j+1; // qualora il carattere successivo non fosse nullo, procediamo con il concatenamento
    }
    }
    int q = stringTesto.size();
    for(int w=0;w<=q-1;w++)
    {
    System.out.println(stringTesto.get(w));
    }


    PS: Sto tentando di salvare nell'arraylist lettere in codice MORSE..che sono distaccate di uno spazio se fanno riferimento alla stessa parola, di 3 spazi se fanno riferimento a parole diverse.
    Es: Sos please ==> ... --- ... .--. .-.. . .- ... .

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da cinco88
    while( charTesto[j] != '0' && j<=g-1)

    if( charTesto[j+1] == '0' || j!=(g-1))

    if(charTesto[j] == '0')
    Io però non capisco questi test sui caratteri (non so di preciso cosa devi fare). Qui stai confrontando un carattere della stringa con '0' .. è il digit 0 (codice ascii 48) non certo il carattere "nullo" (\u0000). E comunque, anche avessi dei caratteri nulli ... da dove ti arrivano? Cioè è strano ... normalmente è molto inusuale dover mettere caratteri nulli nelle stringhe!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    11

    Re: Re: Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da andbin
    Io però non capisco questi test sui caratteri (non so di preciso cosa devi fare). Qui stai confrontando un carattere della stringa con '0' .. è il digit 0 (codice ascii 48) non certo il carattere "nullo" (\u0000). E comunque, anche avessi dei caratteri nulli ... da dove ti arrivano? Cioè è strano ... normalmente è molto inusuale dover mettere caratteri nulli nelle stringhe!
    Mi hai detto tu che potevo sostituire '0' a '\u0000'...vabbè ho reinserito '\u0000'.
    Mi è necessario lavorare sui caratteri nulli perchè il mio programma è un traduttore italiano-codice morse. La parte relativa alla traduzione da italiano a morse l'ho già compilata e funziona bene...per quanto riguarda la parta relativa alla traduzione MORSE ==> ITALIANO, la faccenda è più complessa dell'altro caso, in quanto stringhe con più caratteri ( di lunghezza diversa - da 2 a 4 punti o righe) corrispondono a una singola lettera dell'alfabeto italiano.

    Quello che sto cercando di fare con questo ciclo è di salvare tutte le singole LETTERE morse come stringhe in un arrayList di stringhe ( la scrittura in morse prevede uno spazio tra ogni lettera morse e 3 spazi tra ogni parola - ecco il perchè del'if concatenato ).
    Di seguito ti scrivo il codice riaggiornato in quest'ultimo quarto d'ora ( comunque mi rendo conto che è una domanda impegnativa, non scerverllarti a meno che non ti diverta, mi hai già dato una buona mano )

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    String testo = jTextArea1.getText();
    char[] charTesto = testo.toCharArray();
    int g = charTesto.length;
    ArrayList<String> stringTesto = new ArrayList<String>();
    String lettera = new String();


    int j = 0;
    while( charTesto[j] != '\u0000' && j<=g-1)
    {
    lettera.concat(Character.toString(charTesto[j])); // inserisco il carattere nella stringa

    if(j==(g-1))
    {
    break;

    }
    if( charTesto[j+1] == '\u0000')
    {
    j=j+2; // se il carattere successivo è vuoto, salto di 2
    stringTesto.add(lettera);
    lettera = null;

    if(charTesto[j] == '\u0000')
    {
    stringTesto.add(" "); // aggiungo spazio vuoto all'Arraylist
    j=j+2; // se entrambi i caratteri successivi sono vuoti salto di 4 (2+2)
    }
    }
    else
    {
    j=j+1; // qualora il carattere successivo non fosse nullo, procediamo con il concatenamento
    }
    }
    int q = stringTesto.size();
    for(int w=0;w<=q-1;w++)
    {
    System.out.println(stringTesto.get(w));
    }
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da cinco88
    Mi hai detto tu che potevo sostituire '0' a '\u0000'
    Ho detto 0 (ma dovevo essere più preciso ... 0 costante numerica!!!) non '0' (digit 0).

    codice:
    char a = 0;           // valore numerico
    char a = '\u0000';    // escape "unicode"
    char a = '\0';        // escape ottale
    Sono tutti uguali!

    Originariamente inviato da cinco88
    Mi è necessario lavorare sui caratteri nulli
    Ma questi caratteri nulli chi li mette nella stringa?? Ripeto: è di una rarità pazzesca dover mettere caratteri "nulli" (\u0000 per essere chiari) in una stringa. Cioè ci deve essere un motivo (?) ben valido per avere caratteri nulli in una stringa. E a me non pare il tuo caso ..... (ma dovresti precisare).

    Originariamente inviato da cinco88
    per quanto riguarda la parta relativa alla traduzione MORSE ==> ITALIANO, la faccenda è più complessa dell'altro caso, in quanto stringhe con più caratteri ( di lunghezza diversa - da 2 a 4 punti o righe) corrispondono a una singola lettera dell'alfabeto italiano.
    Ok, allora facciamo un passo indietro e dimentichiamo cosa hai fatto finora.

    Hai una stringa che contiene un codice "morse" e vuoi ottenere i caratteri ascii per renderla "leggibile"??
    Cioè hai es. "... --- ..." e vuoi ottenere "SOS"??? E i codici morse sono appunto, come nell'esempio, separati da uno (o eventualmente più di uno) spazio??

    Non vedo a cosa ti servono i caratteri nulli. Usa anche solo un semplice StringTokenizer, spezza quindi in "token" la stringa e avrai i singoli codici morse "..." poi "---" poi "...".
    A questo punto o fai una classica catena di test usando equals() oppure, in modo molto più furbo, prima crei una "mappa" (HashMap) riempita con associazioni "..." ---> "S" ecc...

    E diventa tutto semplice, pulito e lineare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    11

    Re: Re: Re: Re: Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da andbin
    Ho detto 0 (ma dovevo essere più preciso ... 0 costante numerica!!!) non '0' (digit 0).

    codice:
    char a = 0;           // valore numerico
    char a = '\u0000';    // escape "unicode"
    char a = '\0';        // escape ottale
    Sono tutti uguali!

    Ma questi caratteri nulli chi li mette nella stringa?? Ripeto: è di una rarità pazzesca dover mettere caratteri "nulli" (\u0000 per essere chiari) in una stringa. Cioè ci deve essere un motivo (?) ben valido per avere caratteri nulli in una stringa. E a me non pare il tuo caso ..... (ma dovresti precisare).

    Ok, allora facciamo un passo indietro e dimentichiamo cosa hai fatto finora.

    Hai una stringa che contiene un codice "morse" e vuoi ottenere i caratteri ascii per renderla "leggibile"??
    Cioè hai es. "... --- ..." e vuoi ottenere "SOS"??? E i codici morse sono appunto, come nell'esempio, separati da uno (o eventualmente più di uno) spazio??

    Non vedo a cosa ti servono i caratteri nulli. Usa anche solo un semplice StringTokenizer, spezza quindi in "token" la stringa e avrai i singoli codici morse "..." poi "---" poi "...".
    A questo punto o fai una classica catena di test usando equals() oppure, in modo molto più furbo, prima crei una "mappa" (HashMap) riempita con associazioni "..." ---> "S" ecc...

    E diventa tutto semplice, pulito e lineare.
    Non conosco i StringTokenizer, sono a un livello base, devo fare un'esame di non troppo rilievo preferibilmente usando quando mi è stato insegnato a lezione...Proverò a risolvere la faccenda in un'altro modo, ti ringrazio comunque, sei stato molto gentile! Buona serata!

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Re: Re: Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da cinco88
    preferibilmente usando quando mi è stato insegnato a lezione...
    Ok va bene. Ma ripeto: non credo che devi usare caratteri "nulli". Quelli che separano i codici morse sono spazi. Quindi semplicemente devi trovare dove inizia e finisce un codice morse cercando gli spazi ' '.

    Poi una volta che hai il singolo token morse, come riconoscere quale carattere rappresenta, beh, come ho detto ci sono diversi modi. Il più semplice (sebbene poco efficiente) è la solita catena di if dove fai test con equals().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    11

    Re: Re: Re: Re: Re: Re: Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da andbin
    Ok va bene. Ma ripeto: non credo che devi usare caratteri "nulli". Quelli che separano i codici morse sono spazi. Quindi semplicemente devi trovare dove inizia e finisce un codice morse cercando gli spazi ' '.

    Poi una volta che hai il singolo token morse, come riconoscere quale carattere rappresenta, beh, come ho detto ci sono diversi modi. Il più semplice (sebbene poco efficiente) è la solita catena di if dove fai test con equals().
    Ma quando inserisco un testo in una Jtextarea,
    lo salvo sottoforma di stringa
    e di seguito lo rigiro la stringa in un chararray...
    ...laddove nella stringa di testo vi erano degli spazi " " fra le lettere, nel chararray come vengono salvati???

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Re: Re: Re: Re: Re: Re: operatore di DISUGUAGLIANZA fra caratteri Char?

    Originariamente inviato da cinco88
    laddove nella stringa di testo vi erano degli spazi " " fra le lettere, nel chararray come vengono salvati???
    Come caratteri spazio ' ' ovvero un char con codice ascii/unicode 32 (il literal come escape unicode è '\u0020' ).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.