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

    [Java] Eseguire controllo su oggetto Scanner

    Salve, sono nuovo del Forum. Volevo porvi una domanda: sto facendo un progetto in Java, e mi sono trovato di fronte ad un ostacolo, sicuramente risolvibile in 1000 modi, ma vorrei sapere se e' possibile percorrere questa strada: ad un certo punto del mio codice, devo ricevere un dato da input. Questo dato pero', puo' essere una Stringa, oppure un Intero. Pero' se e' una stringa, voglio eseguire una determinata azione.. se invece l'utente inserisce un intero, voglio che esegua un'altra azione.. ora ho pensato.. se ci fosse un metodo nextObject() relativo alla classe Scanner, avrei risolto:

    Object o = new Scanner(System.in).nextObject();
    if (o instanceof String) // opzione1;
    else if (o instanceof Integer) // opzione2;

    Ma ovviamente la classe Scanner non disponde di tale metodo. Come posso ovviare? Avevo pensato di fare un metodo che stabilisce se una Stringa in verita' e' un numero Intero: splitto la stringa in un array di caratteri. Con un ciclo for scannerizzo l'array di caratteri, se almeno un carattere ha il suo hashcode fuori dal range degli hashcode dei numeri da 1 a 0 allora non e' un intero, altrimenti si. Pero' volevo sapere se potevo ovviare usando qualche metodo particolare di Scanner... ho consultato la API reference ma non ho trovato nulla di utile. Qualcuno sa indicarmi la strada?

    Grazie in anticipo,

    Michele

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Allora per farla breve: leggi con Scanner (o che altro) tutto come fosse String. Poi usi Integer.parseInt che PROVA a convertire una stringa in un intero, se non ci riesce ti lancia una eccezione, per cui potresti fare:

    codice:
    String tuaString = //quel che viene dall'input dell'utente
    try {
      int i = Integer.parseInt(tuaString);
      // fai le cose che dovresti fare con i
    }
    catch (Exception e) {
      // fai le cose che dovresti fare con il dato di tipo String
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Grazie, e' un modo possibile per risolvere.. il fatto e' che volevo sapere se era possibile (in pratica) leggere da input dei dati tramite Scanner (o altro) e considerarli come oggetto, per poi poterli gestire usando il loro tipo dinamico.. ma comunque mi sto rendendo conto che e' meglio adottare altre strade, come quella consigliatami da te. Avevo pensato alla classe wrapper Integer, ma ho fatto un di piu'.. mi sono creato una classe isA, contenente dei metodi statici da usare per questi scopi.. uno dei quali proprio public static boolean Integer(String str), che data una stringa str, ne ottiene i caratteri con getChar[] ed esegue il controllo sui caratteri che ho detto 2 post sopra. Ritorna false al primo hashcode dell'array di caratteri che non corrisponde all'hashcode dei numeri (ovvero se l'hashcode e' minore di 48 o maggiore di 57), altrimenti ritorna true se nessun carattere ha soddisfatto questa condizione. Quindi nel mio main richiamo:

    String str = new Scanner(System.in).next();
    if (isA.Integer(str)) // operazioni da fare con l'intero;
    else // operazioni da fare con la stringa;

    Funziona. Ok, avrei potuto utilizzare la classe wrapper Integer ma questa classe e in particolare questo metodo statico della classe che ho creato mi serviranno in altri progetti futuri.. grazie comunque per l'aiuto e l'immediatezza nel rispondere.

    Buona serata

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.