Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Effettuare controllo su di una stringa affinchè non contenga un insieme di caratteri definito in un array

    Salve, dovrei creare un metodo booleano che mi controlli che data una stringa in input, nessuno dei suoi caratteri sia uguale a uno di questi : 'G', 'I', 'O', 'Q', 'U' .
    Ho realizzato il metodo in diversi modi ma non sono riuscito ad ottenere ciò che voglio.
    Ho provato piu volte a fare debug e ho notato che c'è un problema.

    ecco il metodo

    codice:
    private static boolean checkNotAllowed(String stringa) {     
            boolean valida = false;
            char[] notAllowed = { 'G', 'I', 'O', 'Q', 'U' };
            for (int i = 0; i < stringa.length() ; i++) {
                char attuale = stringa.charAt(i);
                for (int j = 0; j < notAllowed.length; j++) {
                    if (attuale != notAllowed[j]) {
                        valida = true;
                    }
                }
            }
            return valida;
        }
    ma questo ovviamente non va bene perchè per ogni controllo che fa nel secondo for controlla se è diversa imposta valida a true. Quindi non so come fare per verificare che esattamente tutta la stringa in input non contenga nessun carattere situato all'interno dell'array di caratteri notAllowed...
    Come potrei fare??

    con ragionamento analogo mi servirebbe sapere come fare un metodo che mi restituisca un booleano che mi controlli che la stringa in input sia costituita da SOLE lettere attraverso il metodo Character.isLetter(char ch)

    Faccio lo stesso ragionamento di prima

    codice:
    private static boolean checkIsLetter(String stringa) {     
            boolean valida = false;
            for (int i = 0; i < stringa.length() ; i++) {
                char attuale = stringa.charAt(i);
               
                    if (Character.isLetter(attuale)) {
                        valida = true;
                    }
            }
            return valida;
        }
    Ovviamente non va bene perchè la modifica del booleano restituita rappresenta solo l'ultima occorrenza... se do in input ad esempio "2C" il primo carattere è un numero quindi dovrebbe restituire false ma siccome l'ultimo carattere è una lettera mi restituisce true...
    COme potrei risolvere?
    Ultima modifica di applefriend; 19-12-2014 a 20:38

  2. #2
    Bè basta fare il controllo inverso, cioè appena trovi un carattere non valido metti a false la variabile, consiglio subito dopo di mettere un break in quanto è inutile che continui a ciclare una volta trovato un carattere non valido

  3. #3
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Bè basta fare il controllo inverso, cioè appena trovi un carattere non valido metti a false la variabile, consiglio subito dopo di mettere un break in quanto è inutile che continui a ciclare una volta trovato un carattere non valido
    Quindi basta scambiare true e false e risolverei?
    edit: ho provato ma non funziona ugualmente solo se do in input stringhe del tipo "2" o "34" funziona ma se mischio lettere e numeri non va piu bene....
    Ultima modifica di applefriend; 19-12-2014 a 21:15

  4. #4
    No ho detto che devi rovesciare l'algoritmo, tu adesso controlli se il carattere della stringa non è contenuto nell'array di caratteri non validi, ,entre devi fare il contrario, nn basta cambiare il booleano ma devi invertire l'if

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.