[j2me] double naar int?

Pagina: 1
Acties:
  • 116 views sinds 30-01-2008
  • Reageer

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
goed, het is misschien een beetje sneu dat ik over zoiets een topic begin, maar ik ben nu al 2 uur aan't kutten, en ik krijg het niet voor elkaar.
ik ben net begonnen met j2me dus vandaar dat ik zo basic vraag stel

ik moet simpel een double naar een integer parsen, in j2me maar weet gewoon domweg niet welk commando..

wat ik geprobeerd heb:

normaal doe ik het zo:
Java:
1
2
3
double dubbel = 3.645;
int integ = Double.intValue(dubbel);
//maar de hele 'Double' class is pleite in J2ME ofzo :S


dus dan maar zo:
Java:
1
2
3
4
double dubbel = 3.645;
int integ = (int) dubbel;
//word niet geparsed. krijg deze fout:
//build-impl.xml:209: Preverification failed with error code 1.


dus dacht ik aan een omweg:
Java:
1
2
3
double dubbel = 3.645;
int integ = Integer.parseInt(dubbel);
//wat 'natuurlijk' niet werkt want parseInt() pakt alleen strings


dus dacht ik:
Java:
1
2
3
double dubbel = 3.645;
int integ = Integer.parseInt(String.valueOf(dubbel));
//maar dit kan ook 'natuurlijk' niet want String.ValueOf() wil alleen chars, objects of ints hebben

[ Voor 8% gewijzigd door BasieP op 12-02-2005 20:33 ]

This message was sent on 100% recyclable electrons.


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Hele lelijke oplossing zou waarschijnlijk zijn
Java:
1
int foo = Integer.parseInt("" + 1.234);


Maar ik heb ook geen j2me ervaring, d'r zijn vast ook betere manieren ;)

All my posts are provided as-is. They come with NO WARRANTY at all.


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
CyBeR schreef op zaterdag 12 februari 2005 @ 20:34:
Hele lelijke oplossing zou waarschijnlijk zijn
Java:
1
int foo = Integer.parseInt("" + 1.234);


Maar ik heb ook geen j2me ervaring, d'r zijn vast ook betere manieren ;)
mja is idd een origele 'oplossing' maar hij werkt helaas niet :(

ik krijg de fout:
symbol : method append(double)
location: class java.lang.StringBuffer
int foo = Integer.parseInt("" + 1.234);
Fatal Error: Unable to find method append

This message was sent on 100% recyclable electrons.


  • grhmpf
  • Registratie: December 2000
  • Laatst online: 29-05-2022

grhmpf

Android <3

casten had sowieso al moeten werken, die preverify error zou je moeten uitzoeken waardoor dat komt. Misschien is je setup niet helemaal goed? Bijvoorbeeld je gebruikt de rt.jar van j2se ipv de j2me classes?

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
grhmpf schreef op zaterdag 12 februari 2005 @ 20:40:
casten had sowieso al moeten werken, die preverify error zou je moeten uitzoeken waardoor dat komt. Misschien is je setup niet helemaal goed? Bijvoorbeeld je gebruikt de rt.jar van j2se ipv de j2me classes?
mm en hoe zoek ik dat uit? ik heb netbeans geinstalleerd als package, en daarna die j2me package. Geen fouten ofzo gehad.
trouwens doet dat casten het in java wel gewoon
int blaat = (int) dubbel; <-- dat dus

This message was sent on 100% recyclable electrons.


  • Lone Gunman
  • Registratie: Juni 1999
  • Niet online
Voor welke CLDC versie schrijf je ? CLDC 1.0 ondersteunt namelijk geen floats/doubles. In dat geval kan je gebruik maken van een floating point library, bijvoorbeeld Real of Float of iets dergelijks (is wel wat omslachtiger dan gewone floats/doubles gebruiken). CLDC 1.1 heeft wel floats en doubles, en daar heb je dan ook gewoon de Float en Double classes zodat je de intValue() method kunt gebruiken (de Math class is wel wat beperkter dan normaal).

[edit]
Aan de preverification error te zien gebruik je CLDC 1.0 btw, waarbij t dus fout loopt omdat ie double niet kent.

[ Voor 23% gewijzigd door Lone Gunman op 12-02-2005 21:00 ]

Experience has taught me that interest begets expectation, and expectation begets disappointment, so the key to avoiding disappointment is to avoid interest.


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
ja dat klopt idd. ik gebruik 1.0. dit om gewoon op safe te spelen zodat elke telefoon hem kon draaien :|

ik heb 3410, en kan op de nokia site (http://www.nokia.com/nokia/0,8764,539,00.html ) geen nummer vinden. dit houd dus in dat het sowieso MIDP 2.0 ondersteund, maar ik heb dus geen idee of CLDC 1.1 nou wel of niet ondersteund word...

(nogmaals: ik doe dit nog ni zo lang :P )

iig bedankt, dan houd ik op met zoeken.. :/

This message was sent on 100% recyclable electrons.


  • Lone Gunman
  • Registratie: Juni 1999
  • Niet online
de 3410 heeft CLDC 1.0. Telefoons met CLDC 1.1 zijn nog vrij zeldzaam afaik... de enige die ik zo weet is de Nokia 6630.

Maar opzich hoeft dat niet te betekenen dat je geen gebruik kunt maken van floats/doubles. Als je puur berekeningen wilt maken waarbij precisie belangrijk is, kijk dan ns naar de libs uit mn voorgaande post. Voor games kan je wellicht beter een fixed point library schrijven/zoeken (bijvoorbeeld MathFP, gebruikt een long, 16 bits mantissa en exponent), aangezien deze aanzienlijk sneller zijn (ten koste van de precisie). Die libs bestaan meestal uit een class die je makkelijk aan je project toe kunt voegen, en dan werkt t gewoon op iedere telefoon.

[edit... again] Nokia 3410 heeft MIDP 1.0, zie http://www.forum.nokia.com/main/0,6566,016-2048,00.html

[ Voor 8% gewijzigd door Lone Gunman op 12-02-2005 21:12 ]

Experience has taught me that interest begets expectation, and expectation begets disappointment, so the key to avoiding disappointment is to avoid interest.

Pagina: 1