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.
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.
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:
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.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 }
Spero di averti aiutato.
Ciao.
![]()
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.
Questo perchè il separatore dei decimali in java è il punto e non la virgolaOriginariamente inviato da NightlyBlue
Quando c'è la virgola mi parte l'eccezione e il codice la etichetta come stringa.![]()
~d3K4!n~
Allora puoi testare la stringa con una regex: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.
boolean isNumber = str.matches ("\\d+(,\\d+)?");
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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!