[java] Java lijkt af te ronden

Pagina: 1
Acties:

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 09:53
Voor informatica moeten we in java wat applets maken met JavaLogo. Nu gaat alles heel soepeltjes op 1 ding na.

Ik moet een veelhoek maken waarbij de gebruiker het aantal hoeken instelt en de lengte van de lijnstukken. Dit lijkt goed te gaan totdat de gebruiker een waarde invoert waarbij de uitkomst van de hoek die gedraaid moet worden niet een geheel getal is. Dan valt er ineens een gat in de veelhoek.

Het lijkt alsof de waarde achter de komma word afgekapt, alsof ik een double in een integer probeer te proppen. Alleen ik geef de te draaien hoek direct door en stop deze niet eens in een variable. Het is mij dus enigsinds een raadsel waarom niet de juiste hoek gedraaid wordt.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
[...]
    public void tekenprogramma()
    {
        int aantal = invAantal.geefWaarde();
        int zijdelengte = invZijde.geefWaarde();
        
        for(int i = 0; i < aantal; i++) //Teken de veelhoek
        {
            vooruit(zijdelengte);
            rechts(360 / aantal);
        }
    }
[...]


Ik heb al geprobeerd de uitkomst van '360 / aantal' eerst in een double te stoppen en die weer te gebruiken in de methode, maar dit haalde niets uit. Het met de hand invoeren van de hoek werkt wel. Dus bij een aantal van 38 een hoek van 9.47368421 opgeven geeft een perfecte 38 hoek.

Waarom kapt java mijn hoek af als ik deze niet met de hand invoer?

  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Komt dit niet omdat java stilzwijgend alles naar int cast? Probeer eens in je berekening zelf te casten naar double.

[ Voor 16% gewijzigd door raoulduke op 28-10-2004 20:44 ]

Remember, if you have any trouble you can always send a telegram to the Right People.


  • Trinsec
  • Registratie: Februari 2003
  • Laatst online: 20-05 19:38

Trinsec

Huffi-Muffi-Guffi

Ik herinner me vaag iets van mijn Java klassen een paar jaar terug.. verander 360 eens in 360.00? Misschien wordt 360/aantal als integer beschouwd omdat ze beiden integers zijn, en dat omzeild kan worden als een van hen een double/float is?

when the Darkness fell upon us
when the Evil Ones came!
Creatures from the darkest pits of hell they were.
Trinsec's Journal


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

int / int geeft int. Dus 360 / int wordt afgerond, als je het daarna in een double stopt is het alsnog afgerond. Je moet zoiets doen 360.0 / aantal, of 360 / (double)aantal (hoe cast je in java? zo?)

  • Weng
  • Registratie: Juni 2001
  • Laatst online: 11-05-2024

Weng

Are y'all ready kids

Maak er 360.0 van

Aye aye captain


  • icecoolsniper
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:06

icecoolsniper

never run from a sniper!

maak van beide ints doubles, anders krijg je namelijk integer deling en dan rond ie et af naar het dichtsbijzijnde hele getal.
dus double zijdelengte, double aantal

[ Voor 14% gewijzigd door icecoolsniper op 28-10-2004 20:49 ]

http://www.tweakers.net/gallery/58175/sys


  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 09:53
Wat is het leven toch simpel af en toe.
Java vind inderdaad dat int / int een int als uitkomst moet hebben. Het veranderen van 360 naar 360.0 was voldoende om de boel helemaal goed te laten werken (en daar heb ik dus net 1.5 uur mijn hoofd op zitten breken :P).

Heel erg bedenkt jullie allemaal voor het enthousiaste reageren. ;)

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Mac_Cain13 schreef op 28 oktober 2004 @ 20:51:
Wat is het leven toch simpel af en toe.
Java vind inderdaad dat int / int een int als uitkomst moet hebben. Het veranderen van 360 naar 360.0 was voldoende om de boel helemaal goed te laten werken (en daar heb ik dus net 1.5 uur mijn hoofd op zitten breken :P).

Heel erg bedenkt jullie allemaal voor het enthousiaste reageren. ;)
Geeft niet hoor, elke eerste jaars breekt daar zich het hoofd over, daarom zit er in vrijwel elke java opgave altijd een deling :) (hoewel ik het toendertijd wel al wist, maar heb me ongetwijfeld ook ooit het hoofd gebroken hierover...toen ik 12 was ofzo :) lol sorry)

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 09:53
Zoijar schreef op 28 oktober 2004 @ 20:59:
[...]

Geeft niet hoor, elke eerste jaars breekt daar zich het hoofd over, daarom zit er in vrijwel elke java opgave altijd een deling :) (hoewel ik het toendertijd wel al wist, maar heb me ongetwijfeld ook ooit het hoofd gebroken hierover...toen ik 12 was ofzo :) lol sorry)
Niet zo patsen jij. ;)

Ik moest het toch een keer tegenkomen he. Gewoon nog nooit met java gewerkt.
Maar iig bedankt :>

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Mac_Cain13 schreef op 29 oktober 2004 @ 07:32:
Niet zo patsen jij. ;)

Ik moest het toch een keer tegenkomen he. Gewoon nog nooit met java gewerkt.
Maar iig bedankt :>
Hehe, ik maakte maar een grapje :)
Pagina: 1