Avatar billede talos Nybegynder
16. maj 2004 - 19:48 Der er 9 kommentarer og
1 løsning

update metode der bruger element fra linked list

Her under er koden...undskyld formatet :S

Problemet: Den efterfølgende metode virker perfekt såfremt curr.getTimeOfArrival + nytid IKKE overstiger next.getTimeOfArrival.

Eksempel:
curr.getTimeOfArrival = 0755
nytid = 4 (minutter)
next.getTimeOfArrival = 0757

Hvis curr + nytid overstiger next (hvilket den gør i ovenstående eksempel) så springer den next over :S

Først finder min for-løkke ud af hvilket element der er det første der skal ændres...det jeg så har brug for er altså at ændre alle de efterfølgende.

Forestiller mig noget i retning af en array der indeholder alle de linked list elementer der skal ændres??? Er der nogen der kan hjælpe med dette?

public void updateArrivalTime(JobInfo jobs, int nytid, int nytid2)
{
    this.jobs = jobs;
           
    Node curr = head;
    Node prev = null;
       
    for(curr = head; curr != null && curr.getItem().getTimeOfArrival() < jobs.getTimeOfArrival(); prev = curr, curr = curr.getNext());
       
    if((((curr.getItem().getTimeOfArrival())%100)+nytid) >= 60)
    {
        jobs.setChangeInArrival(100);
        updateArrivalTime(jobs, nytid-60, nytid2);            }
    else
    {               
        jobs.setChangeInArrival(nytid);
        nytid = nytid2;
        if(curr.getNext() != null)
            updateArrivalTime(getNext(jobs), nytid, nytid2);
    }
}
Avatar billede talos Nybegynder
16. maj 2004 - 21:11 #1
ingen bud?? Mangler i evt. flere informationer?
Avatar billede arne_v Ekspert
16. maj 2004 - 21:16 #2
Tja - jeg forstår hverken problemet eller koden.

Mit forslag hvis du vil videre er enten:
  komme med et komplet program og forklare hvad output burde være og så kan
  vi rette til
eller:
  forklare high level hvilket problem der skal løses og så kan vi
  komem med alternative forslag
Avatar billede talos Nybegynder
16. maj 2004 - 21:21 #3
well, jeg har en linked list. Denne indeholder JobInfo objecter. 1 af disse objecter (en int) skal opdateres.

Det er objectet TimeOfArrival der skal opdateres. Dette felt er et int (f.eks. i formatet 1455) hvilket er det samme som kl 14.55.

Ovenstående metode checker sådan set bare om det nuværende tidspunkt + det tidspunkt der skal lægges oveni overstiger f.eks. 1500.

Jeg skal kunne opdatere det element der findes i for-løkken og alle efterfølgende med det "nytid" parameter der sendes med ind i update metoden.
Avatar billede talos Nybegynder
16. maj 2004 - 21:22 #4
jeg kan evt. maile dig både denne class samt JobInfo classen samt den main jeg bruger til at teste med, så kan det være det er nemmere at se sammenhængen..
Avatar billede arne_v Ekspert
16. maj 2004 - 21:35 #5
Jeg forstår stadig intet
Avatar billede talos Nybegynder
16. maj 2004 - 21:37 #6
kan du komme nærmere ind på hvad det er du ikke forstår???

Så kan jeg evt. udspecificere enkelte punkter nærmere

Tilbuddet om at sende class filerne står stadig ved magt :D

skulle gerne bruge en metode der virker inden imorgen tidlig :S
Avatar billede arne_v Ekspert
16. maj 2004 - 21:48 #7
>jeg har en linked list.

Det forstå jeg.

Jeg forstå ikke hvorfor du bruger din egen fremfor den i java.util ...

>Denne indeholder JobInfo objecter.

OK

>1 af disse objecter (en int) skal opdateres.

Og så bliver jeg forvirret - en int er ikke et objekt i Java

>Det er objectet TimeOfArrival der skal opdateres.

???? Lige før var det et JobInfo objekt der skulle opdateres

>Dette felt er et int

???? int igen

>(f.eks. i formatet 1455) hvilket er det samme som kl 14.55.

Jeg forstår ikke hvorfor du ikke bruger java.util.Date eller evt. en long med
antal milliseuknder siden 1. januar 1970 ?

>Ovenstående metode checker sådan set bare om det nuværende tidspunkt + det
>tidspunkt der skal lægges oveni

Man kan ikke ligge tidspunkter sammen. Man kan kun ligge et tidsinterval til et
tidspunkt.

--------

Jeg kunne lave en tilsvarende med koden.

Så der er rigtigt mange ting som jeg ikke forstår.

Og jeg tror ikke at det tjener noget formål at du email mig hele koden, fordi
jeg tror stadigvæk ikke at jeg ville kunne forstå hvad den skal.
Avatar billede talos Nybegynder
16. maj 2004 - 21:54 #8
ok..

Det er ikke nogen bestemt tid jeg skal bruge. Det er blot et simuleringssystem.

public JobInfo(int truckID, String currentPos, String destination, String destinationPos, int timeOfArrival, int changeInArrival, boolean activationStatus)

En af disse trucks "rapporterer" derefter at han bliver forsinket til næste destination. timeOfArrival skal derefter tælles op får både den kommende destination og alle efterfølgende (hvilket min update metode helt i starten også fint gør).

Problemet kommer når den kommende destination + den ændring trucken indrapportere overstiger den næste destination, så får den ikke den næste destination opdateret.
Avatar billede talos Nybegynder
16. maj 2004 - 21:55 #9
skal også lige tilføjes at en truck selvfølgelig har flere jobs og hvert af disse job indeholder ovenstående JobInfo informationer mht. id, currentPos osv.
Avatar billede talos Nybegynder
17. maj 2004 - 11:26 #10
lige meget, har selv lavet en iterativ løsning fremfor denne recursive
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester