2013-04-17, 20:15
  #1
Medlem
Hej!

Jag r nybrjare inom programmering och skulle behva lite hjlp med att felska i en kod skriven i Java (Eclipse). Programmet r frmodligen mycket enkelt och litet i erfarnas gon, dock r detta det strsta jag gjort. Vad programmet har fr uppgift r fljande;

Anvndaren ska ange hur mnga kast som ska ske med en 6-prickig trning.
Programmet utfr kasten och rknar hur mnga gnger trningen hamnar p varje siffra.
Sist men inte minst ska programmet rita ett stapeldiagram med 6 staplar (en fr varje siffra allts). Meningen r att man ska se frdelningen mellan resultaten rent statistiskt.

Problemet r att staplarna icke ritas upp nr jag trycker p knappen, ngot r galet och jag kan inte hitta felet.

Programmet r endast skrivet i 1 st klass.

En snabbtitt p koden kan du f hr: http://pastebin.com/xcvtVmTH
Kllkoden kan du ladda ner hr: https://docs.google.com/file/d/0B4I9...it?usp=sharing
En frdigkompilerad version (.jar) kan du ladda ner hr: https://docs.google.com/file/d/0B4I9...it?usp=sharing

Jag r jttetacksam verkligen om ngon kan hitta felet!
Tack s mycket!
Citera
2013-04-17, 22:53
  #2
Medlem
one.zeros avatar
Fram tills ngon Java-kodare kan hjlpa dig s kan du prova detta.

P rad 44 ser det ut som att slumptalet ligger mellan 1 - 7. ndra 6:an till en 5:a.
Men jag tror inte det orsakade problemet.

Lycka till.
Citera
2013-04-17, 23:10
  #3
Medlem
Citat:
Ursprungligen postat av one.zero
Fram tills ngon Java-kodare kan hjlpa dig s kan du prova detta.

P rad 44 ser det ut som att slumptalet ligger mellan 1 - 7. ndra 6:an till en 5:a.
Men jag tror inte det orsakade problemet.

Lycka till.

Du har tyvrr fel, men tack fr att du i varje fall frskte hjlpa till. Metoden Math.random() slumpar ett tal i intervallet 0 ≥ X < 1. Det betyder att det strsta mjliga talet r 0,99999. Multiplicerar du det med 6 fr du ungefr 5,99999. Adderar du sedan med 1 som jag gjort fr du 6,99999. Sedan sker en heltalsomvandling dr alla decimaler kapas bort, d blir det 6. Det sker allts ingen regelrtt avrundning upp till 7 som man kan tnka sig.
Citera
2013-04-17, 23:18
  #4
Medlem
PhilDunphys avatar
Citat:
Ursprungligen postat av chrismalla
Du har tyvrr fel, men tack fr att du i varje fall frskte hjlpa till. Metoden Math.random() slumpar ett tal i intervallet 0 ≥ X < 1. Det betyder att det strsta mjliga talet r 0,99999. Multiplicerar du det med 6 fr du ungefr 5,99999. Adderar du sedan med 1 som jag gjort fr du 6,99999. Sedan sker en heltalsomvandling dr alla decimaler kapas bort, d blir det 6. Det sker allts ingen regelrtt avrundning upp till 7 som man kan tnka sig.

Felet du gr r att nr du ska rkna ut procentsatsen tar du antalet gnger en trningen blivit en viss siffra delat med antalet kast, dr bda r int'ar. Vad hnder nr du tar int/int?

Hint. Graferna ritas, men p fel stllen.

ps. posta i Java-forumet nsta gng
Citera
2013-04-17, 23:31
  #5
Medlem
one.zeros avatar
Citat:
Ursprungligen postat av chrismalla
Du har tyvrr fel, men tack fr att du i varje fall frskte hjlpa till. Metoden Math.random() slumpar ett tal i intervallet 0 ≥ X < 1. Det betyder att det strsta mjliga talet r 0,99999. Multiplicerar du det med 6 fr du ungefr 5,99999. Adderar du sedan med 1 som jag gjort fr du 6,99999. Sedan sker en heltalsomvandling dr alla decimaler kapas bort, d blir det 6. Det sker allts ingen regelrtt avrundning upp till 7 som man kan tnka sig.

OK. Och tack fr infot. Posta grna lsningen nr du har den.
Citera
2013-04-17, 23:52
  #6
Medlem
Citat:
Ursprungligen postat av PhilDunphy
Felet du gr r att nr du ska rkna ut procentsatsen tar du antalet gnger en trningen blivit en viss siffra delat med antalet kast, dr bda r int'ar. Vad hnder nr du tar int/int?

Hint. Graferna ritas, men p fel stllen.

ps. posta i Java-forumet nsta gng

Jag har felskt nu ett tag p egen hand och hittade just det du anmrkte, men felet r ngon annanstans. Kolla den uppdaterade pastebin-lnken. P rad 71 har jag lagt till s att jag kan se med egna gon vad variablerna fr fr vrden.

nr_1_procent = -400 * (nr_1 / antal_kast);

variablerna nr_1 och antal_kast fr korrekta vrden. Men nr hgerledet hr ovan ska sparas i variabeln nr_1_procent hnder ngot(eller inget). Nr jag kontrollerar eftert s har variabeln vrdet 0! Hur kan det bli s galet?! Hgerledet stmmer ju, varfr tilldelas inte vrdet variabeln?

Kan jag ta bort min trd och lgga upp den i Java-forumet? Mste f min smn nu, imorgon bitti kommer jag in igen. Tack!
Citera
2013-04-18, 00:07
  #7
Medlem
PhilDunphys avatar
Citat:
Ursprungligen postat av chrismalla
Jag har felskt nu ett tag p egen hand och hittade just det du anmrkte, men felet r ngon annanstans. Kolla den uppdaterade pastebin-lnken. P rad 71 har jag lagt till s att jag kan se med egna gon vad variablerna fr fr vrden.

nr_1_procent = -400 * (nr_1 / antal_kast);

variablerna nr_1 och antal_kast fr korrekta vrden. Men nr hgerledet hr ovan ska sparas i variabeln nr_1_procent hnder ngot(eller inget). Nr jag kontrollerar eftert s har variabeln vrdet 0! Hur kan det bli s galet?! Hgerledet stmmer ju, varfr tilldelas inte vrdet variabeln?

Kan jag ta bort min trd och lgga upp den i Java-forumet? Mste f min smn nu, imorgon bitti kommer jag in igen. Tack!

Du har inte ndrat att du delar en int med en annan int. r inte jttebra p termerna, s frklarar jag det p enkel svenska. Tar du int1/int2 fr du ut vrdet hur mnga HELA gnger fr int2 plats i int1. Eftersom antal kast alltid r strre n antalet gnger kommer du alltid f ut 0. Ta tex om vi kastar 100ggr fr ett 10ggr. 10/100=0.1, men eftersom 10 och 100 r intar fr 100 plats i 10 0 gnger. Du lser det genom att multiplicera ngot av talen med en double.

Kod:
nr_1_procent = (int)(-400 * ((nr_1*1.0) / antal_kast)); 
Citera
2013-04-18, 08:50
  #8
Medlem
Citat:
Ursprungligen postat av PhilDunphy
Du har inte ndrat att du delar en int med en annan int. r inte jttebra p termerna, s frklarar jag det p enkel svenska. Tar du int1/int2 fr du ut vrdet hur mnga HELA gnger fr int2 plats i int1. Eftersom antal kast alltid r strre n antalet gnger kommer du alltid f ut 0. Ta tex om vi kastar 100ggr fr ett 10ggr. 10/100=0.1, men eftersom 10 och 100 r intar fr 100 plats i 10 0 gnger. Du lser det genom att multiplicera ngot av talen med en double.

Kod:
nr_1_procent = (int)(-400 * ((nr_1*1.0) / antal_kast)); 

Jag la mig igr kvll och grubblade p vad du hade skrivit frst och kom p vad du menade. Jag knner mig s dum. Det r klart det inte gr att dividera int med int. Tack s mycket fr hjlpen, du lste det!

Jag uppskattar verkligen all hjlp!
Citera
2013-04-18, 17:30
  #9
Medlem
Zoms avatar
Programvara vriga O/S → Java

/mod
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in