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

    [Java] Capire se una String rappresenta un numero

    Ho una JTable popolata di String. Quando accedo ai dati vorrei capire se essi sono stringhe che potrebbero rappresentare un Number o se sono testo non numerico.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    37
    Non so se ho capito bene, nel caso precisa meglio correggendomi.

    Non capisco perchè l'utilizzo della classe Number. Sei il tuo problema è solo quella di capire se è un numero o meno potresti adottare le wrapper class come Integer, Double, ecc.

    Se ad esempio sai di avere certamente nella tabella solo valori interi (nel caso siano numeri) potresti fare come nello pseudo-codice:
    codice:
    String s = "la stringa ritornata dalla cella della JTable";
    try{
        int x = Integer.parseInt(s);
    catch(NumberFormatException nfe){
        //allora questa stringa non è un numero e successivamente x sarà null
    }
    In questo modo dopo il catch la variabile "x" avrà un valore numerico se la stringa rappresentava un numero altrimenti "null" se non la rappresentava. Ovviamente puoi fare lo stesso con i Double o gli altri tipi.

    Spero di averti aiutato.
    Ciao.


  3. #3
    Ok, io ho per lo più da distinguere booleani da stringhe. Se uso quel metodo (parseDouble e gestione eccezioni) il discorso mi funziona solo quando non ho decimali. Quando c'è la virgola mi parte l'eccezione e il codice la etichetta come stringa.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    5
    Originariamente inviato da NightlyBlue
    Quando c'è la virgola mi parte l'eccezione e il codice la etichetta come stringa.
    Questo perchè il separatore dei decimali in java è il punto e non la virgola
    ~d3K4!n~

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da NightlyBlue
    Ok, io ho per lo più da distinguere booleani da stringhe. Se uso quel metodo (parseDouble e gestione eccezioni) il discorso mi funziona solo quando non ho decimali. Quando c'è la virgola mi parte l'eccezione e il codice la etichetta come stringa.
    Allora puoi testare la stringa con una regex:

    boolean isNumber = str.matches ("\\d+(,\\d+)?");
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Il problema è che avolte ho sia punti (divisore delle migliaia) sia virgole. Quindi tolgo punti e virgole e poi faccio il parseInt gestendo l'eccezione. Grazie ad entrambi!

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.