Det kan man sagtens - du kan jo eks. lave en Person-klasse der indeholder et Array/ArrayList/whatever, samt en metode til at ændre en given opgave til en given status, og så gemme en instans pr. person i den collection der mapper fra cpr til person.
For at ændre status, henter du så den relevante instans ud af din collection, og kalder den metode du har lavet.
Jeg har egentlig ikke noget imod at lave et kodeeksempel, men du får nok mest ud af at prøve at lave det selv, og så spørge om de ting du er i tvivl om.
Om du skal bruge et fast array til opgavernes status afhænger af den nøjagtige opgaveformulering og hvor fleksibelt programmet skal være - med andre ord, det er noget du må tage stilling til.
Hvis du er 110% sikker på at det altid er 21 opgaver, så kan du godt bruge et array, men hvis antallet kan variere, er du nok bedre tjent med en anden form for collection med opgavens nummer som indeks (eks. en HashMap<Integer,StatusType>, eller hvad der nu er passende).
Man kunne måske endda forestille sig en Opgave-klasse, der så indeholder ekstra oplysninger om den pågældende opgave (beskrivelse, m.v.). Denne kunne du eks. bruge som indeks i Person-klassens HashMap (altså en HashMap<Opgave,StatusType>).
Du kommer jo ikke uden om en eller anden person-klasse når du også skal have navnet med - du kunne ganske vist lave noget fusk så det var et status-array der lå direkte i collectionen, men så kan du ikke have navnet med - og det bliver bare endnu mere besværligt hvis der skal mere ind på et senere tidspunkt.
ja det er sikkert at der er maks 21 opgaver og dette skal ikke udvides. I opgaven strå der heller ikke noget om at personregistret skal kunne udvides, men synes bare at det ville være det mest naturlige at lave (medmindre det bliver alt for bøvlet).
Jeg er ikke helt sikker på hvordan hashmap virker. Hvis du har et link eller en god forklaring evt tegning så ville det være fint. Ved ikke rigtig hvad forskellen skulle være på en arraylist og hashmap?
I og med at du opretter en instans af person-klassen pr. person, kan du løbe gennem hans opgave-array/HashMap/whatever og sætte status.
Et HashMap fungerer ved at du kan have en vilkårlig nøgle der mapper til en værdi. En arraylist er essentielt et array der selv ændrer størrelse, men hvor elementerne altid er indekseret med 0-n, hvor n er antal-1. Da du med fordel kan bruge cpr som nøgle, giver en HashMap mening, da du jo næppe bestemmer den værdi ud fra rækkefølgen de blev oprettet (og tilmed starter fra 0).
Om du skal bruge en string eller Integer eller en helt tredje type afhænger af hvad der egner sig bedst til cpr-værdien.
Det du vil gøre kan gøres på 1000 måder. En af de dårligste ville nok være at "koble hashmap og arrays sammen"
Det ligner en database opgave i og med at det du skal gøre typisk ville blive gjort med en database (med 2 tabeller).
tabel: "NAVN" felt: cprnr heltal felt: navn streng_af_bogstaver unik nøgle er cprnr
tabel: "status" felt: cprnr heltal felt: opgavenr heltal felt: status ? unik nøgle er [ cprnr, opgavenr ]
dit eksempel er så en simpel ændring (eller tilføjelse) i tabellen "status"
for den række i tabellen status hvor cprnr = <givet cpr> og opgavenr = <givet opgavenr> skal status sættes til <given status>
I begge tableller bruges cprnr som nøgle (hel eller delvis) og siden cprnr er på 10 cifre ville det blive alt for langt et array hvis vi brugte arrays. Så jeg vil anbefale du bruger 2 hashmaps.
#jakoba Det var også min første tanke, eller at man kunne indlæse fra en tekstfil. Men tror mest opgaven går ud på at få arrays og diverse(pensum) nogenlunde på plads. Så den mest besværlige måde er vel lige så god som den nemmeste måde :D Skal jo lære det skidt hehe ;P
Alene det at personregistret ikke behøver kunne udvides, er et godt tegn på at opgaven ikke går ud på at lære om den bedste måde at gøre tingene på, men at lære grundstenene i hvordan sproget fungerer. Man kan snildt argumentere for at kunne få en smule mere fleksibilitet, men netop en database tror jeg lidt ødelægger intentionen bag opgaven.
Der er ingen tvivl om at en database nok er den bedste måde at gøre det på, og det er jeg ikke i tvivl om vil være den første tanke når de her elever engang er færdige med uddannelsen - men når man er under uddannelse, er man engang i mellem nødt til at holde sig til de mindre gode løsninger.
//G-opgaver - dat for (int j=9; j < 11; j++){ if (ARRAYS.hold[i][j] == 2) count1++; } count3 = count1 / 2; System.out.println("hej " + count3);
//summerer de værdierne ovenfor og udskriver om den studerende må gå til eksamen countug = count2 + count3; System.out.println("hej " + countug); if (countug >= 1.75) System.out.println(ARRAYS.person[i] + "\tkan gå til eksamen i datalogi"); i++; }
din fejl er her: while(i <= ARRAYS.hold[0].length) de gyldige indeks værdier starter jo med 0 så hvis der skal være 19 celler ialt skal du slutte ved 19-1, og ikke ved 19. Lav '<=' om til '<' while(i < ARRAYS.hold[0].length)
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.