08. maj 2002 - 12:54Der er
10 kommentarer og 2 løsninger
Generering af brugernavn
Jeg vil generere et brugernavn ud fra for- og efternavn, det skal foregår på følgende måde:
Klaus Pedersen bliver til : KlPe
Men hvis kan findes i forvejen skal det være KlaPe
Hvis han findes skal det være KlaPe1
hvis han... Klape2 osv.
Jeg kan godt får den til at lave Klape men hvis denne findes skal der vel laves en eller anden form for rekursiv-metode eller en while-løkke der undersøge på det 6. tegn indtil den finder det største nummer og derefter oprette en bruger med "nummer++".
Jeg kunne godt tænke mig noget respons i form af kode og forklaring.
Indtil videre har jeg følgende kode i mit klasse BinaertTrae:
De bruger id's som findes skal du smide i en hashmap.
Deres key er bruger id'et value er antal man er nået til.
Hvis du sø kommer til KlaPe, og ser den findes, henter du value som nu er 1, så genererer du KlaPe1 som bruger det som ID. og tæller så value for KlaPe 1 op, osv.
Det må da også være muligt at gøre med en rekursiv metode eller i en while-løkke der undersøger på om brugernavnet består af 6 karakter og hvis det gør, så er den sidste jo et tal. Hvis man så bruger en parseInt på dette tal, vil man kunne køre smøre igen indtil man finder det største tal. Er dette ikke muligt? og i såfald hvordan rent kode mæssigt?
map.put(key,new Integer(value)); key er den text ID du har lavet, og value er det antal gange den er brugt
når du skal hente siger du f.eks.
Integer idCount=(Integer)map.get(key); Hvis den key ikke findes er idCount=null så ved du at du skal lave en ny, ellers kan du lave den til en int via .intValue(), bruge den til at lave et nyt id, tælle en op og .put den tilbage i din hashmap.
p.s. Collections kan være temmelig komplexe at have med at gøre til at starte med, men geniale når man først har styr på det.
Her er et stærk forsimplet eksempel til at forstå hvordan hashMap virker.
import java.util.*;
public class hm { public static void main (String args[]) { HashMap hashmap = new HashMap(); hashmap.put("soeren","Experten");
String kodeord =(String)hashmap.get("soeren"); System.out.println("soerens kodeord er " + kodeord);
} }
Som du ser bruges soeren til at beregne hvor i tabellen Eksperten skal ligge. Derefter bruges soeren igen til at beregne hvor den samme oplysning ligger, og henter den ud. QD::
Jep det gør man.... Derfor sidder jeg også og prøver nu med en rekursiv funktion.. tror jeg er tæt på en løsning, men....det er jo aldrig til at vide! ;o) Er ikke helt sikker på den dersens hash-tabel, men må lige se på det... og så give jer pointene...
Jeg valgte så at bruge en while løkke istedet, og fik det til at funke. Mange tak for de gode hints :o)
Synes godt om
Ny brugerNybegynder
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.