webForumDet fria alternativet

Javaproblem(vid summauträkning/listning)

5 svar · 513 visningar · startad av nigge

niggeMedlem sedan feb. 2002199 inlägg
#1

Är i full färd med att försöka lära mig java, men har kört fast ordentligt i "programmet" jag kämpar med.
är ett program som man registrerar personer och deras ägodelar i,
och värdet på prylarna räknas ut. så långt allt väl.

Men när det kommer till att räkna ut en persons totala rikedom, och lista ut samtliga prylarna som personen äger, kör jag rakt in i väggen.

klistrar in en del av koden tagen ur en av klasserna som är tänkt att ta fram infon för EN speciell person och lista den personens prylar.

void visaVissPerson(){
String vem=readString("Namnet på personen du söker");
int x=0;
for(Person per : personer){
if (per.getNamn().equalsIgnoreCase(vem)){
x++;
// System.out.println(per);
System.out.println(per.getNamn()+per.getVärde()+per.getSak()+per.getTotal());
}
}

(det ligger i en klass som heter Dialog och som även innefattar main-metoden)
i den klassen ligger även en ArrayList med samtliga personer som lagras.
i en klass som heter Person ligger en ArrayList med samtliga prylar som varje person har.

Har även en liknande getVärde() metod i Personklassen...
som ser ut såhär.
public int getVärde(){
for (Prylar pr : prylar){
rikedom=rikedom+pr.getVärde();
break;
}

Problemet jag har är helt enkelt att varje gång jag kör metoden VisaVissPerson() i main-metoden så plussas personens rikedom ihop...
dvs den visar korrekt första varvet, sedan felaktiga...
detta är ju helt logiskt då rikedom sätts till rikedom plus prylens värde...
men HUR kan man lösa detta på ett fungerande sätt?

Har även en getVärdeMetod() i Prylar-klassen
har lagt in sådana lite överallt, tänkte ta och rensa i koden när jag väl fått det att fungera...
den ser ut såhär:
public int getVärde(){
return värde;
}

Några förslag?! vore extremt tacksam för hjälpen!
:bire

spangoMedlem sedan juni 20008 205 inlägg
#2

Vad är getVärde tänkt att göra, ska den returnera summan av alla prylar en person äger? I sådana fall ska du inte lagra värdet någon annanstans:

public int getVärde(){
    int sum = 0;
    for (Prylar p : prylar) sum += p.getVärde();
    return sum;
}

Sen känns Prylar som ett skumt klassnamn, borde det inte vara Pryl?

Och så ska man skriva sin kod på engelska, för att försöka få det någorlunda konsekvent. Svenska tecken bör undvikas helt och hållet.

niggeMedlem sedan feb. 2002199 inlägg
#3

Otroligt stort tack för hjälpen!
det var det där lilla som gjorde det!!=)

Och visst, Prylar är ett väldigt dumt namn, det ska ändras, ville bara få det att fungera först! nu är det bara listningen av vilken person som är rikast, men det borde jag nog kunna få till om jag gnuggar mina geniknölar, annars återkommer jag med ytterligare en fråga.

återigen enormt tack för hjälpen!
/Niklas

spangoMedlem sedan juni 20008 205 inlägg
#4

Välj gärna "Acceptera som slutgiltigt svar" på inlägget som besvarade din fråga. :)

niggeMedlem sedan feb. 2002199 inlägg
#5

Har ett till problem, när jag försöker kompilera mina klasser så får jag felmeddelande för att den inte hittar dom andra klasserna,
och eftersom det finns "hänvisningar" till andra klasser i alla klasser så går ingen att kompilera...
om jag däremot har class-filerna redan så rockar allt...

Något förslag på vad som kan vara fel?
Tack återigen för hjälp

LimeMedlem sedan sep. 2001961 inlägg
#6

Ja, du har inte satt upp classpath i javac-kommandot på rätt sätt. De kan den inte hitta till de andra klasserna.

Import i java tar inte med de andra klassernas koder i din kod, utan säger bara "jag vill använda mig av den där klassen, försök att hitta den".

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)