PDA

Visualizza la versione completa : [java] instanceof


Turrican
21-10-2003, 21:23
ciao a tutti, il mio problema il seguente:
vorrei sapere come fare a capire se un oggetto un intero o una stringa
io faccio un test di questo tipo
if(oggetto instanceof Integer)
purtroppo non funziona, come devo fare???
grazie

LeleFT
21-10-2003, 23:55
Non capisco... un int non un oggetto, quindi la funzione instanceof non ha senso... String un oggetto, quindi puoi usare la funzione instanceof per differenziare due variabili di due oggetti diversi.

Se il tuo problema sapere se una stringa contiene un numero oppure no, puoi usare il metodo parseInt() statico per Integer: se il metodo ti ritorna un'eccezione di tipo NumberFormatException allora l'oggetto non rappresenta un intero.

Se il problema non questo, posta un po' di codice...

Ciao.

ChReAn
22-10-2003, 09:49
Originariamente inviato da LeleFT
Non capisco... un int non un oggetto, quindi la funzione instanceof non ha senso... String un oggetto, quindi puoi usare la funzione instanceof per differenziare due variabili di due oggetti diversi.


Veramente ha scritto



instanceof Integer

che sintatticamente e' corretto. :tongue:

Se pero' si ha una variabile di tipo int, il compilatore non dovrebbe vederla come istanza di Integer e quindi il codice non funzionera' mai.
Secondo me c'e' un'altra soluzione per scrivere quel programma, mi pare strano che una variabile venga utilizzata indipendentemente per int e String... Ma sono solo supposizioni. :ciauz:

Turrican
22-10-2003, 23:02
Ho capito, ma quindi come posso fare per eseguire queste istruzioni:

oggetto = Console.readLine("Inserisci l'oggetto");
if(oggetto instanceof Integer)
{
a = (Integer)oggetto;
misura = misura + a.intValue();
}
else
{
b = (String)oggetto;
misura = misura + b.length();
}

grazie

anx721
23-10-2003, 01:08
Per risponderti bisogna sapere cosa restituisce il metodo readLine() della classe Console. Se readLine() restituisce un Object, che di volta in volta pu essere un Integer o una String il codice corretto. Se readLine() restituisce una String, per vuoi distinguere il caso in cui la stringa restituita rappresenta un intero, puoi usare il medodo suggerito da LeLeFT:

String oggetto = Console.readLine("Inserisci l'oggetto");
try{
misura = misura + Integer.parseInt(oggetto);
catch(NumberFormatException e){
misura = misura + oggetto.length();
}

Ciao.

Loading