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

    java scanner string input

    qualcuno mi spiega per favore come controllo in java che input riceve solo stringa non numeri
    perchè il mio programma non da nessun errore se inserisco un numero perchè ? grazie mille
    codice:
    package studentClassPackage;
    import java.util.Scanner;
    
    
    public class studentClass {
        
        private String stuName;
        
        public void setStudentsName(){
            Scanner studentInputName = new Scanner(System.in);
            System.out.print("\t\tEnter student name --> ");
            if(studentInputName.hasNextLine()){
                this.stuName = studentInputName.nextLine();
            }else{
                System.out.println("\t\tInvalid input supply");
            } 
        }
        
        public String getStudentName(){
            return this.stuName;
        }
    }
    shiviphpdevelopment

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,
    per Java c'è la sezione apposita. Comunque un modo semplice (anche se forse c'è di meglio) è scandire la stringa e lanciare un'eccezione (o quello che vuoi) se trovi un numero. Il tuo codice non da errore perché una stringa può anche essere formata da numeri. Un conto è il numero 123, un altro è la stringa "123"...

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se vuoi considerare "non valido" un nome che contiene numeri basta che lo dai in pasto ad una regex.

    Ad esempio:

    codice:
    String tempName = studentInputName.nextLine();
    if (Pattern.matches("\\p{Alpha}*", tempName)) {
        this.studentName = tempName;
    } else {
        System.out.println("ERRORE!");
    }
    Info sulle regex le trovi su http://docs.oracle.com/javase/6/docs...x/Pattern.html

    ps: stuName è un nome orrendo per una variabile.
    Ultima modifica di Alex'87; 27-07-2014 a 10:42
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    si l'ho cambiato anche a me non piaceva grazie mille x il tuo aiuto cosi funziona alla grande però se uso il blocco try catch non va bene !!!!!! perchè ho letto che try catch si usa nelle condizioni più pericolose è vero invece il controllo che voglio fare io va benissimo if statement ?
    shiviphpdevelopment

  5. #5
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Diciamo che try-catch si usa quando il codice nel blocco try può lanciare una eccezione, che tu vai a catturare e gestire nel blocco catch. L'if è un semplice controllo. Qui dipende tutto da come vuoi impostare il programma...

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da shivi_php Visualizza il messaggio
    si l'ho cambiato anche a me non piaceva grazie mille x il tuo aiuto cosi funziona alla grande però se uso il blocco try catch non va bene !!!!!! perchè ho letto che try catch si usa nelle condizioni più pericolose è vero invece il controllo che voglio fare io va benissimo if statement ?
    Spiega meglio cosa vuoi fare.

    Il try-catch si usa quando si possono verificare delle condizioni "eccezionali".
    Ti faccio un esempio.

    Ipotizza di dover chiedere all'utente di inserire un numero:
    codice:
     
    Scanner scanner = new Scanner(System.in);
    int numero = scanner.nextInt();
    Cosa succede se inserisci una stringa che non è un numero intero? Otterresti un'eccezione e il programma si spaccherebbe:

    Exception in thread "main" java.util.InputMismatchException

    Usando il try-catch puoi gestire questa situazione:

    codice:
    Scanner scanner = new Scanner(System.in);
    
    int numero;
    
    try
    {
        numero = scanner.nextInt();
    }
    catch ( InputMismatchException ex )
    {
        System.out.println("Non hai inserito un numero valido!");
    }
    Poi sta a te decidere cosa fare: o chiedi un nuovo numero o utilizzi un default o altro ancora, dipende dalla situazione.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.