Ciao a tutti sono nuovo del forum e sto imparando Java da autodidatta.
Ho conseguito il diploma di perito informatico (usando Visual Basic) ma ormai sono passati 5 anni senza fare pratica e sono un po' arrugginito
Volevo esporvi questo esercizio trovato su di un libro:
" Scrivere un programma che legge una stringa dalla tastiera e verificare se essa contiene la parola "console". Il programma deve essere in grado di stabilire che anche la parola "cOnsOlE" è indesiderata (come qualsiasi altra combinazioni di maiuscole/minuscole). Si estenda il programma in modo che individua le parole indesiderate prese come parole a se stanti e non come parti di altre parole. Per esempio non deve trovare parole come panconsole, consolelle,.. etc. ""
Ecco il mio programma:
codice:package ricercaparole1; import java.util.Scanner; /** * * @author */ public class RicercaParole1 { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here String s, s1; int indice = 0, lunghezzaStringa; char lettera; boolean trovato = false; Scanner tastiera = new Scanner(System.in); System.out.println("Scrivi una frase"); s = tastiera.nextLine(); // Uniformo tutti i caratteri della stringa in caratteri minuscoli lunghezzaStringa = s.length(); s1 = s.toLowerCase(); while ((!trovato) && (indice < lunghezzaStringa)){ lettera = s1.charAt(indice); if (lettera == 'c'){ // Controllo che non arrivi a fine stringa dentro il while if (indice + 1 < lunghezzaStringa) { indice += 1; lettera = s1.charAt(indice); } if (lettera == 'o'){ // Controllo che non arrivi a fine stringa dentro il while if (indice + 1 < lunghezzaStringa) { indice += 1; lettera = s1.charAt(indice); } if (lettera == 'n'){ // Controllo che non arrivi a fine stringa dentro il while if (indice + 1 < lunghezzaStringa) { indice += 1; lettera = s1.charAt(indice); } if (lettera == 's'){ // Controllo che non arrivi a fine stringa dentro il while if (indice + 1 < lunghezzaStringa) { indice += 1; lettera = s1.charAt(indice); } if (lettera == 'o'){ // Controllo che non arrivi a fine stringa dentro il while if (indice + 1 < lunghezzaStringa) { indice += 1; lettera = s1.charAt(indice); } if (lettera == 'l'){ // Controllo che non arrivi a fine stringa dentro il while if (indice + 1 < lunghezzaStringa) { indice += 1; lettera = s1.charAt(indice); } if (lettera == 'e'){ // Controllo che non arrivi a fine stringa dentro il while if (indice + 1 < lunghezzaStringa) { lettera = s1.charAt(indice + 1); } // Controllo che la parola "console" sia a se stante, a fine stringa o seguita da un punto if ((indice >= lunghezzaStringa - 1) || (lettera == ' ') || (lettera == '.') || (lettera == '!') || (lettera == '?')){ trovato = true; } else { trovato = false; indice ++; } } else { indice ++; } } else { indice ++; } } else { indice ++; } } else { indice ++; } } else { indice ++; } } else { indice ++; } } else { indice ++; } } if (trovato){ System.out.println("Parola trovata"); } else { System.out.println("Parola NON trovata"); } } }
Se non ho capito male dovrebbe essere una semplice ricerca.
Il programma funziona tranne nel caso in cui la parola console non è preceduta da uno spazio.
Per esempio mi trova la parola "panconsole" che non dovrebbe essere trovata.
Volevo chiedere la vostra opinione su dove ho sbagliato o dove devo modificare.
Grazie in anticipo![]()