Avatar billede Slettet bruger
25. december 2005 - 15:23 Der er 13 kommentarer og
1 løsning

Find hul i nummerserie

Hej, min hjerne er gået i julemode, så er gået i stå i en forholdsvis enkel kode, håber i kan komme med et eks på hvordan man gør følgende:

Jeg har en arraylist med følgende indhold:
1
2
4
6
5

Hvor jeg skal søge igennem og se om der et et hul i nummerserien, hvis der er det skal jeg blot retunere det første nummer i "hullet" - hvis der ikke er noget hul i serien skal den retunere det højeste+1.

Altså i mit eks nummerserie burde den retunere "3".
Avatar billede arne_v Ekspert
25. december 2005 - 15:25 #1
er det ikke bare en simpel for løkke som tester om data[i]!=(i+1) ?
Avatar billede bitsch Nybegynder
25. december 2005 - 15:35 #2
Hvad skal du buge det til, der er en "duft af dårlig arkitektur". Men hvis dit array er relativt lille så ok (det er jo kun jul én gang om året).
Avatar billede Slettet bruger
25. december 2005 - 15:41 #3
Jeg har x antal profiler, og de har et id nr som jeg læser ind i mit array.
Hvis man sletter en profil midt i serien, skal jeg senere når jeg vil oprette en ny skal den finde de evt huller.
Avatar billede Slettet bruger
25. december 2005 - 15:42 #4
Arne prøv lige at smid et eks, så kan jeg se om jeg kan bruge det. takker
Avatar billede arne_v Ekspert
25. december 2005 - 15:46 #5
bool fnd = false;
int n;
for(int i = 0; i < list.Count; i++) {
  if((int)list[i] != (i+1)) {
      n = i+1;
      fnd = true;
      break;
  }
}
if(!fnd) n = lst.Count + 1;

det kan faktisk laves pænere med en while løkke, men for løkken er mere sikker
mod programmerings fejl
Avatar billede arne_v Ekspert
25. december 2005 - 15:47 #6
og jeg er måske også lidt skeptisk overfor den logik som gør den her kode nødvendig
Avatar billede bitsch Nybegynder
25. december 2005 - 15:51 #7
Er det virkeligt så vigtigt at genbruge gamle ID´s ? Det kan føre til en masse følgefejl (hvilket naturligvis afhænger af din app.).
Avatar billede bitsch Nybegynder
25. december 2005 - 15:53 #8
Overvej at bruge en unik nøgle i setedet (f.eks. Guid)
Avatar billede Slettet bruger
25. december 2005 - 15:55 #9
Hmm lyder som om at jeg bare skal tage det højeste nr i min liste og +1 istedet, kan godt se det skaber nogle problemer.

Hvordan sorterer jeg en arrayliste så den sorterer som: 1,2,3,4,5,6,7,8,9,10 istedet for 1,10,2,3,4,5,6,7,8,9 som den gør ved brug af list.Sort().

Så laver jeg bare et nyt id, istedet for at søge og genbruge ubrugte id'er.
Avatar billede arne_v Ekspert
25. december 2005 - 15:58 #10
hvis din arraylist indeholder tal fremfor strings så bør den sortere som du vil have det
Avatar billede Slettet bruger
25. december 2005 - 15:58 #11
Ok, takker! den indeholder strings nu, så laver det om til int og så kører det, tak, smid svar
Avatar billede arne_v Ekspert
25. december 2005 - 15:59 #12
svar
Avatar billede Slettet bruger
25. december 2005 - 16:01 #13
Tak for jeres svar begge to
Avatar billede bitsch Nybegynder
25. december 2005 - 16:02 #14
God jul :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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