• Forum
      /  
    Programmering og webdesign
      /  
    Programmering
  • 15-11-2006 · 21:18 597 visninger 13 svar
  • Denne tråd er over 6 måneder gammel

    Er du sikker på, at du har noget relevant at tilføje?

  • Java: Double-objekt til primitive tal

    Af uniQue Mega Nørd
Jeg har to tal, som er Double objekter.
Disse to tal vil jeg gerne dividere med hinanden, og det kan jeg se, at jeg ikke kan.
Jeg vil derfor gerne høre hvordan jeg konvertere Double til primitive tal, så jeg kan dividere dem med hinanden?

Monsterbruger
15-11-2006 21:35
Øøh.. Hvilken fejl får du? Evt. post din kode på pastebin.com eller lignende..
Mega Nørd
15-11-2006 21:39
For at komme med det konkrete problem, det er inde i min for løkke;

Følgende er tidligere i filen:

int d;
double value, newvalue;


Og det er her problemet opstår:

value = (Double) indexarray.get(factor+2); // denne duer fint
newvalue = (temparray.get(d) / value); // HER ER PROBLEMET!

data temparray (ArrayList) er af typen Double-objekter. Og jeg får følgende fejl:

"operator / cannot be applied to Java.lang.Object, double"
Mega Supporter
15-11-2006 21:48
Det er længe siden jeg selv har prøvet, men prøve sådanher:

newvalue = (temparray.get(d).doubleValue() / value);

http://java.sun.com/j2se/1.4.2/docs.../...
Mega Supporter
15-11-2006 21:58
Du kan sikkert bruge #3's svar.. Men for at fortsætte den stil du koder med ovenover.

Så lav en typecast på objectet du hiver ud af temparray. Alt i en ArrayList er objekter.
Det kan du også se på fejlen. "operator / cannot be applied to Java.lang.Object, double".
Altså din compiler ser, "Object / Double".

Så du kan vel lave den sådan.
((Double)temparray.get(d) / value).
Mega Nørd
15-11-2006 22:08
Da jeg lavede som #3, der siger siger compileren, at den ikke kan finde "doubleValued()" metoden, sandsynligvis fordi den ikke kan genkende elementer i arrayen som typen Double. Men jeg har heller ikke defineret at arrayen kun må indeholde Double, da jeg intialiserede array, men det er også fordi derudover kommatal også skal lægge tekst i arrayen, men så prøvede jeg med denne:

newvalue = ((Double) temparray.get(d)).doubleValue()/value;

Altså konverterer array indholdet til Double, der kunne jeg godt compile, men så får jeg en "Exception in thread main java.lang.classcastException: Java.lang.string" ved kørsel :(
Mega Supporter
15-11-2006 22:19
Hvorfor har du stadig den .doubleValue metode på..? Jeg vil bare gætte på du skal lave en typecast..
Mega Nørd
15-11-2006 22:34
#6 Jeg får samme fejl som i #5, når jeg gør som du siger. Irriterende!
Og jeg har selv udskrevet og set, at værdien i array'en i den beregnede position er altså et kommatal, så det burde kunne konverteres!
Mega Supporter
15-11-2006 22:37
Jeg har nu selv testet, og den metode jeg postede i #4 virker fint...

Kan du ikke smide hele koden op på pastebin? Eller maile den til mig?
Det skal så kun være hvis det er en enkelt klasse...
Mega Nørd
15-11-2006 22:53
Ok kan jeg få din mail?
Barden

#10

Monsterbruger
15-11-2006 23:30
Nu spørger jeg måske dumt, men hvordan ser det komma tal ud ?

eks.

1) 1,25
2) 1.25
Syfax

#11

Mega Supporter
16-11-2006 11:59
Hov.. Jeg troede min mail stod i profilen, men det gør den ikke mere.
Den er carstenn AT gmail.com hvis du stadig mangler hjælp.
uniQue

#12

Mega Nørd
16-11-2006 18:19
-0.60/8.7
uniQue

#13

Mega Nørd
17-11-2006 00:18
#11 Har fået hjælp fra Syfax og det funger bare nu :).
Bruger påkrævet
En bruger er påkrævet for at oprette svar på Hardwareonline.dk

Log ind for at få flere funktioner