PDA

View Full Version : Convertire una stringa in un intero (in java)...


sbciao82
20-12-2006, 10:50
Salve;inanzitutto auguro buone feste a tutti;
e poi avrei bisogno di un
consiglio urgente perchè devo risolvere questo problema in fretta:
Devo convertire una stringa in intero in java....
La stringa è un mese dell'anno(tipo Jan,Feb,...Oct,etc) la devo convertire in intero(tipo 01,02,...10,...).
Come si fa?

:help: Grazie immensamente....

^TiGeRShArK^
20-12-2006, 10:58
mi sa ke la soluzione + pulita e` usare un enumeration.

andbin
20-12-2006, 11:07
Salve;inanzitutto auguro buone feste a tutti;
e poi avrei bisogno di un
consiglio urgente perchè devo risolvere questo problema in fretta:
Devo convertire una stringa in intero in java....
La stringa è un mese dell'anno(tipo Jan,Feb,...Oct,etc) la devo convertire in intero(tipo 01,02,...10,...).
Come si fa?Ci sono diverse soluzioni:

a) Classica catena di if:
int mese;

if (str.equals ("Jan"))
mese = 1;
else if (str.equals ("Feb"))
mese = 2;
....
b) Classico array String[] mesi = { "Jan", "Feb", ...... }; e utilizzo di un ciclo for per una ricerca lineare in cui si usa equals() per cercare la stringa.

c) Creazione di un HashMap che mappa stringhe -> interi.
HashMap<String,Integer> map = new HashMap<String,Integer> (12);
map.put ("Jan", 1);
...

Integer mese = map.get (str);

sbciao82
20-12-2006, 11:08
un enumeration? Ossia?
Purtroppo non ho ancora molta confidenza con la
documentazione di Java....
Io avevo pensato ad uno switch ma purtroppo non si può usare con valori di stringhe!!!

sbciao82
20-12-2006, 11:16
Ciao andbin...la seconda soluzione...quella dell'array...com è che si fa?
:help: Grazie

andbin
20-12-2006, 11:29
Ciao andbin...la seconda soluzione...quella dell'array...com è che si fa?
:help: GrazieL'ho spiegato ... magari non perfettamente:
- Crei un array di String che contiene i 12 nomi.
- Fai un ciclo for da i=0 a < tuoArray.length
- Per ogni elemento tuoArray[i] fai la comparazione con equals(), se è true allore l'hai trovato e il mese è i+1

sbciao82
20-12-2006, 11:32
Grazie mille per la disponibilità...... :)

^TiGeRShArK^
20-12-2006, 20:31
Ecco la soluzione che utilizza le enumeration..
scusa ili ritardo ma dal lavoro praticamente non posso postare sul forum a parte in un lasso di tempo che va dai due ai 5 minuti al giorno :D

public class ProvaEnumeration {

private enum Month {
Jan(1), Feb(2), Mar(3), Apr(4), May(5), Jun(6),
Jul(7), Aug(8), Sep(9), Oct(10), Nov(11), Dec(12);

private final int number;

Month(int number){
this.number = number;
}
}


public ProvaEnumeration() {
for(Month m: Month.values()) {
System.out.println("Il mese " + m + " è il numero " + m.number);
}

Month m = Month.valueOf("Apr");
System.out.println("Il mese " + m + " è il numero " + m.number);

String month = "May";
System.out.println("Il mese " + Month.valueOf(month) + " è il numero " + Month.valueOf(month).number);
}


public static void main(String[] args) {
ProvaEnumeration p = new ProvaEnumeration();
}
}

e di seguito ti incollo anche l'output del programmino di cui sopra :p

Il mese Jan è il numero 1
Il mese Feb è il numero 2
Il mese Mar è il numero 3
Il mese Apr è il numero 4
Il mese May è il numero 5
Il mese Jun è il numero 6
Il mese Jul è il numero 7
Il mese Aug è il numero 8
Il mese Sep è il numero 9
Il mese Oct è il numero 10
Il mese Nov è il numero 11
Il mese Dec è il numero 12
Il mese Apr è il numero 4
Il mese May è il numero 5

Imho questa è la soluzione indubbiamente + elegante...
ma poi si sa... dipende dai gusti di ognuno di noi ;)