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

    problema con un esercizio di java

    ciao a tutti, sto studiando java e nel terzo capitolo dove si parla dell' istruzione if-else ho trovato un problema con un esercizio. Devo scrivere un programma che legge una stringa dalla tastiera e verifica se contiene una delle parole indesiderate. Praticamente devo censurare tutta la frase se contiene una delle parole ignorando maiuscole e minuscole.

    Fino a qui tutto bene, il problema � che devo estendere il programma affiche escluda solo le righe che contengono quelle parole ma non come parti di altre parole. Per esempio una delle parole � "censore", la frase "sto aspettando l'ascensore" non deve essere censurata. Questa seconda parte non riesco a capire come risolverla, se potete datemi degli indizi cos� da risolverlo da solo

    Questa � una delle varie prove che ho scritto

    codice:
    import java.util.Scanner;
    
    public class c3ex2_7 {
               
        public static void main(String[] args){
            
            System.out.println("Scrivi qui il messaggio.");
            Scanner tastiera = new Scanner(System.in);
            // console,censore,magistrato
            String messaggio = tastiera.nextLine();
            
            String mess = messaggio.toLowerCase();
            if (mess.contains("console")) || mess.contains("censore") || mess.contains("magistrato"))
                System.out.println("parole indesiderate");
            
                
            else
                System.out.println(messaggio);
        }
    
    }
    Grazie a tutti in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Stroll Visualizza il messaggio
    devo estendere il programma affiche escluda solo le righe che contengono quelle parole ma non come parti di altre parole. Per esempio una delle parole � "censore", la frase "sto aspettando l'ascensore" non deve essere censurata.
    Le soluzioni sono svariate.

    1) spezzi in "token" la stringa usando spazi, virgole, punti ecc.. come separatori/delimitatori. Con una stringa "sto aspettando l'ascensore" vai ad ottenere "sto", poi "aspettando", poi "l", poi "ascensore". A quel punto il confronto che fai è completo sulla stringa (non "che contiene" ma che è esattamente, ignorando eventualmente il case maiuscolo/minuscolo)

    Per ottenere token puoi usare la classe StringTokenizer oppure il metodo split() di String. Sono due cose diverse e con concetti differenti.

    2) Usi una espressione regolare che "cattura" sequenze di caratteri che sono parole intere e allo stesso modo di 1) verifichi la uguaglianza esatta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    4
    in questo modo dovrei usare un loop giusto?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Stroll Visualizza il messaggio
    in questo modo dovrei usare un loop giusto?
    Sì, naturalmente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    4
    il problema è che quelli si trovano al capitolo successivo, cioè li so usare ma dovrei risolvere l'esercizio senza i loop

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Stroll Visualizza il messaggio
    il problema è che quelli si trovano al capitolo successivo, cioè li so usare ma dovrei risolvere l'esercizio senza i loop
    1) Se le parole da verificare sono fisse e note a priori, una soluzione è una singola "espressione regolare" per verificare se una parola esatta nella frase è una di quelle. Non ci sarebbe bisogno di fare cicli. Ma le espressioni regolari sono ovviamente molto di più e probabilmente non richieste nel tuo caso.

    2) Usare StringTokenizer per separare le parole, poi arrivare ad ottenere un ArrayList e poi testare le condizioni se la lista contiene X oppure Y ecc... Si può fare senza cicli ma è "brutto" (si deve sfruttare il fatto che StringTokenizer è un Enumeration, oltretutto di <Object>).

    3) Usare split() di String per separare le parole, che fornisce un String[], poi arrivare ad ottenere una List di stringhe e di nuovo testare se contiene le parole. Anche qui si può fare senza cicli.

    Insomma, spulciando la documentazione javadoc del framework dei "barbatrucchi" si trovano ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    4
    ah ecco, credo di dover usare le enumerazioni. Non ci avevo pensato perchè non sono nel programma del corso e quindi ho dato solo una letta veloce. Grazie mille per l'aiuto

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Stroll Visualizza il messaggio
    credo di dover usare le enumerazioni.
    Enumerazioni nel senso di "iterazione" (Enumeration è il "antenato" di Iterator) .... non le enum di Java 5.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2018
    Messaggi
    2
    andbin mi spieghi come hai fatto alla fine? mi sono imbattuto nel tuo stesso esercizio e non ho capito bene come muovermi

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2018
    Messaggi
    2
    mi sono imbattuto nel tuo stesso esercizio. Mi potrresti spiegare poi come hai fatto?
    Grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.