Archief - Klein vraagje (Alweer) over java programmeren :D

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

girl229

Legacy Member
:doh:Ik ben dus bezig met een opdracht voor school, over programmeren met Java. Nou heb ik dus weer een vraagje, waarschijnlijk weer iets heel stoms maar we komen er niet uit. Het gaat om de volgende code:

int som = res[0] + res[1] + res[2] + res[3] + res[4] + res[5] + res[6] + res[7] + res[8] + res[9] + res[10] +
res[11] + res[12] + res[13] + res[14] + res[15] + res[16] + res[17] + res[18] + res[19] + res[20] +
res[21] + res[22] + res[23] + res[24] + res[25] + res[26] + res[27];

Dit gaat zo door tot res[99]. Nou denk ik dat er wel een kortere manier is om dit te programmeren in Java:p. Wie o wie kan ons hiermee helpen? We zijn duidelijk nog een beetje leeken op het gebied van java...... :doc:

Groetjes :doh:

Parnakra

Legacy Member
Code:
int som=0;
for(int i=0; i<99; i++)
   som+=res[i];
Of je kan i.p.v. 99 res.length gebruiken, maar dat hangt ervan af hoe (groot) je res geïnitialiseerd hebt.

girl229

Legacy Member
Thanks! Het werkt, naar die code zijn we dus vet lang opzoek geweest. Volgens mij zijn we echt nog leken met Java. :ironic: We kunnen nu eindelijk weer verder.

Thanks again:bow:! Groetjes :doc:

girl229

Legacy Member
We zijn nu weer verder gekomen, maar lopen weer vast. De opdracht was dus het 300 keer laten gooien van een dobbelsteen en deze waarde in een array zetten en de som weergeven in een label. Dit stuk hebben we nu gedaan. Nu moeten we ook nog bepalen hoevaak er bijvoorbeeld 6 is gegooid. Dit hebben we zo gedaan:

int aantal6 = 0;
for (int t = 0; t < BEURTEN; t++) {
if (res[t] % 6 == 0)
aantal6++;

Als het goed is klopt deze code voor het getal 6. Ook werkt hij voor het getal 4 en 5. Maar bij de getallen 3, 2 en 1 klopt deze code niet meer. Nu hebben we misschien een idee als oplossing. Als je het aantal keren 6 hebt geteld, dat de array met de waarde 6 geleegd wordt. We hebben alleen geen idee hoe we dit in een code moeten omzetten. Dit staat namelijk nergens in onze boeken.

Thanks en groetjes!

Parnakra

Legacy Member
Het is normaal dat het niet werkt voor 3, 2, 1 als je modulobewerkingen gebruikt, aangezien dat je daar in de problemen komt met veelvouden.

Ik versta je voorstel om het op te lossen niet volledig, maar waarom gebruik je niet gewoon res[t] == 6? Ervan uitgaande dat je het aantal ogen dat geworpen werd bij worp t opslaat in res[t], natuurlijk.

girl229

Legacy Member
Ik geloof dat je ons veel tijd hebt bespaard en ons dichter bij een voldoende voor de opdracht hebt gebracht. xD

Net als de vorige keer werkt deze briljante oplossing ook. We gaan denk ik niet een carriere als programmeur beginnen. ;)

Thanks again!

girl229

Legacy Member
Nu moeten we de resultaten (hoeveel keer een X aantal ogen geworpen is) in een histogram zetten. Hier ga ik morgen weer verder over nadenken. Nog tips?

Groetjes ;)

centralzero

Legacy Member
moet je het histogram tekenen in de methode paintComponent?

Curahee Q

Legacy Member
girl229 zei:
Net als de vorige keer werkt deze briljante oplossing ook.

Dat is geen briljante oplossing, dat is logisch ;). De regel bij zoiets is gewoon "Keep it simple". Niet meteen een moeilijke oplossing voor je probleem gaan zoeken.

Om bij te houden hoeveel keer een bepaalde waarde gegooid is werk je best met een frequentietabel (een array) van 6 groot. Elke index staat voor zijn equivalent gegooide waarde.

freq_tabel[0] // voor gegooide waarde 1
...
freq_tabel[5] // voor gegooide waarde 6

Code:
int aantal[] = new int[6];

// alle waarden in tabel aantal op 0 zetten (verplicht in c++, weet niet of ze in java standaard 0 zijn)
for(int i=0; i<6; i++)
	aantal[i] = 0;

for(int i=0; i<BEURTEN; i++) {
	aantal[res[i]-1]++;
}

centralzero

Legacy Member
Curahee Q zei:
// alle waarden in tabel aantal op 0 zetten (verplicht in c++, weet niet of ze in java standaard 0 zijn)
for(int i=0; i<6; i++)
aantal = 0;

for(int i=0; i<BEURTEN; i++) {
aantal[res-1]++;

}[/code]


in java is het 't beste dat je ze meteen een waarde toewijst, anders krijg je(als je 'm in het begin van het programma al oproept) een nullPoinerException

theforce

Legacy Member
In Java staan de elementen van een integer-array standaard altijd op 0. (idem voor short, long, double = 0.0, boolean = false, ...).

In C/C++ gebeurt dit alleen als de array static of globaal gedeclareerd is.

De nullpointerexception krijg je in Java als je geen geheugen alloceert voor je array (met de new operator).

BETA911

Legacy Member
Wat theforce zegt...
Std. in Java krijgen alle waardes in een array al de waarde 0.

Jerre Muesli

Legacy Member
Mag ik vragen wat ge studeert? Hopelijk geen informatica want we zijn al december en een loop is u blijkbaar niet bekend..

Cycloon

Legacy Member
Parnakra zei:
Code:
int som=0;
for(int i=0; i<99; i++)
   som+=res[i];
Of je kan i.p.v. 99 res.length gebruiken, maar dat hangt ervan af hoe (groot) je res geïnitialiseerd hebt.

Niet om te mierenneuken, maar als het gaat tot res[99] dan heb je 1tje te weinig :)

Parnakra

Legacy Member
Ik doe ook niet aan mierenneuken, maar tot 99 betekent tot en met 98, dus ik heb ze allemaal. :)

Jerre Muesli

Legacy Member
Op de letter wel, maar ik betwijfel het ten zeerste dat ze het tot 98 wou.. Nuja ze zal het niet merken want loops zijn haar onbekend
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan