Controllo che una stringa non contenga una lettera

di il
8 risposte

Controllo che una stringa non contenga una lettera

Ciao,

devo inserire un numero da tastiera e controllare che sia un intero e non una lettera; volevo fare questo implementando io un metodo per farlo.

Io prendo la stringa inserita da tastiera e controllo per tutta la sua lunghezza che per ogni carattere non ci sia una lettera ():

int count = 0;
for(int i=0; i<stringa.length(); i++){
if(stringa.charAt(i) != 'c')
count++; ed altrre funzioni....
}
Però vedo che non riesce a leggere la lettera: se metto quella incriminata continua a non riconoscerla.....

8 Risposte

  • Re: Controllo che una stringa non contenga una lettera

    Keyboard ha scritto:


    Però vedo che non riesce a leggere la lettera: se metto quella incriminata continua a non riconoscerla.....
    cosa intendi?
  • Re: Controllo che una stringa non contenga una lettera

    Neanche io ho capito bene cosa vuoi dire con l'ultima frase, però ti propongo un'altra soluzione al problema.

    Non so se conosci il metodo statico parseInt(String s) della classe Integer che ti permette di trasformare una stringa in un numero a patto che la stringa contenga solo numeri (e al massimo un segno meno all inizio della stringa).

    Se la stringa contiene caratteri non numero allora viene lanciata un eccezione.
    In questo modo hai controllato che la stringa non contenga lettere.
    Esempio:
    
    Scanner scan=new Scanner(System.in);
    String s=scan.next(); //legge da tastiera
    
    int n=0; //inizializzo n a zero
    		
    try{
    	n=Integer.parseInt(s);
    					
    }catch(NumberFormatException e){}
    		
    if(n==0)
    	System.out.println("la stringa letta, conteneva almeno un carattere non numero");
    		
    else{
    	System.out.println("la stringa letta era un numero :)");
    }
    
    il try catch l' ho usato per gestire l'eccezione che viene lanciata dal metodo parseInt se gli viene fornita una stringa non numero.
    In realtà questo modo di agire è utile solo per i numeri interi, ma esiste il metodo parseDouble(della classe Double) che fa (quasi) la stessa cosa con i numeri decimali.
  • Re: Controllo che una stringa non contenga una lettera

    Scusate se mi sono spiegato male; nel mio esempio
        int count = 0;
        for(int i=0; i<stringa.length(); i++){
        if(stringa.charAt(i) != 'c')
        count++; ed altre funzioni....
        }
    il "count" aumenta se ogni carattere della stringa non è una lettera "c"; provando a farlo girare vedo che invece aumenta anche con tale lettera quindi non mi controlla se la stringa ha delle lettere "c" o meno; era un esempio per vedere se appunto funzionava, poi lo dovevo adattare al mio scopo.

    Nel codice che mi avete dato non è che il cilco "if-else" deve stare dentro le parentesi graffe del catch? Scusate ma sono alleprime armi con Java
  • Re: Controllo che una stringa non contenga una lettera

    Se all'interno di un if (e di qualsiasi altra struttura ciclica interrogativa) ci sono più istruzioni da eseguire, questo blocco di istruzioni và eseguito dento le {}
    if(condizione){blocco di istruzioni} else {altro blocco di istruzioni}

    tu li stai controllando se ogni carattere della stringa contine la c minuscola...è quello che serve a te? sei andato in debug per vedere cosa succede???

    il debug è fondamentale, se non sapete usarlo cambiate mestiere o passione
  • Re: Controllo che una stringa non contenga una lettera

    Se sei alle prime armi con java ti consiglio di lasciar perdere il mio esempio,
    perchè fa uso della gestione delle eccezioni che è un argomento piuttosto avanzato (niente di complesso, ma ci si arriva pian piano).
    Come ti hanno già indicato forse il problema è nel tuo if. Se nel tuo if hai messo piu istruzioni, queste, devono essere racchiuse da una coppia di parentesi graffe, come ha detto Zaknafein83.
    Se hai ancora problemi col programma, posta il codice, che scopriamo insieme cosa c'è che non va

    Un ultima cosa, se stai imparando java, (specie se è il tuo primo linguaggio di programmazione)
    ti consiglio vivamente di studiare da un libro (io mi sono trovato bene con "Big java" di cay Horstmann).
    La maggior-parte di cose che imparerai saranno valide per qualsiasi linguaggio orientato agli oggetti, per questo è importante che il primo linguaggio di prog sia studiato bene.
    Ciao
  • Re: Controllo che una stringa non contenga una lettera

    Grazie per l'aiuto; poi riprovando sono riuscito a risolvere il controllo.
  • Re: Controllo che una stringa non contenga una lettera

    il debug è fondamentale, se non sapete usarlo cambiate mestiere o passione
    Hai ragione...... sapresti darmi qualche consiglio su come imparare ad usarlo?
    Semplicemente provando non credo si arrivi molto lontano: ci sto provando.
    Grazie.
  • Re: Controllo che una stringa non contenga una lettera

    Keyboard ha scritto:


    il debug è fondamentale, se non sapete usarlo cambiate mestiere o passione
    Hai ragione...... sapresti darmi qualche consiglio su come imparare ad usarlo?
    Semplicemente provando non credo si arrivi molto lontano: ci sto provando.
    Grazie.
    in eclipse

    http://www.vogella.com/articles/EclipseDebugging/article.html


    netbeans non lo uso da una vita...ma credo che googlando trovi molto.
Devi accedere o registrarti per scrivere nel forum
8 risposte