forsog.put("tommer","Rigtig"); forsog.put("Tommer","Fejl,stor T,resten er rigtig"); forsog.put("tOmmer","Fejl,lille t rigtig, stor O forkert,resten rigtig"); forsog.put("tomer","Fejl,mangler lile m,resten rigtig"); forsog.put("TommeR","Fejl,Stor T og R, resten rigtig");
Du kunne bruge et HashSet til hurtigt at checke for om ordet er stavet rigtigt.
Men hvis du vil analysere hvordan ordet er stavet forkert saa skal du igang med 2 loekker.
En loekker som itererer over de kendte ord i array listen. Og en anden loekke som itererer over bogstaver i ordet og det ord som du sammenligner.
Men det er faktisk enn ret kompleks logik der skal til. Hvordan beslutter du dig for at det er det ord som er stavet forkert ? Og hvordan definerer du hvad der er fejlen ? Det er rimeligt komplekst at kode. Du skal starte med at definere den algoritme du skal bruge.
Du kan først og fremmest oprette du arrays, der består af chars for ordet som det skal staves, samt et array for det ord der er skrevet og skal evalueres.
Så laver du en løkke der sammenligner ord for ord. Hvis du finder en fejl, kan du evt. smide de chars der er forkerte ind i en ny liste - fejlListen.
Hvis denne er != 0, kører du en algoritme der analysere hvert bogstav. Hvis det F.eks. er med stort har du opdaget én type fejl og kan fortælle brugeren dette. En anden type fejl er hvis de to arrays er af forskellig størrelse, så ved du de har glemt et bogstav.
Er det ikke nogenlunde det du søger!? I øvrigt, Kig String klassens dokumentation igennem, så du er helt up to date med hvilke metoder den indeholder :)
System.out.println("Der var i alt " +fejl+" fejl"); }
/*Her kommer kun de ord, som ikke passer med det oprindelige * password. De tjekkes bogstav for bogstav. * 3 ArrayList gemmer fejl, afhængig af om man har * skrevet få,flere, eller undladt bogstaver eller cifre * i overensstemmelse med det oprindelige password. */ public void adskilFejl(char [] c){
char []tempchar = new char[30]; tempchar = c; char [] pwd =new char[30]; pwd = tmp.toCharArray(); ArrayList fejllist = new ArrayList(); //Forkert indtastede bogstaver eller cifre. ArrayList glemtlist = new ArrayList(); //Undladt at skrive en/flere bogstaver eller cifre. ArrayList langlist = new ArrayList(); //Skrevet for mange bogstaver eller cifre.
for(int j=0;j<tempchar.length;j++) {
if(tempchar[j]==pwd[j]) { System.out.println(tempchar[j]+" Er ens "+pwd[j]); } else {
if(tempchar.length==pwd.length) { System.out.println("ordene har samme længde");
} else { int t1 = tempchar.length; int t2 = pwd.length;
if(t1<t2) { int t3=t2-t1; glemtlist.add(new Character(tempchar[j])); System.out.println("der mangler "+t3+" bogstav"); } else { int t4=t1-t2; langlist.add(new Character(pwd[j])); System.out.println("Der er "+t4+" for mange bogstaver"); }
}
fejllist.add(new Character(tempchar[j])); System.out.println(tempchar[j]+" er fejlen");
Hvis mit oprindelige password er ex: SDBd5C, og alle ander skal passe til den, så hvis vi siger at i et tilfælde så passer den frem til B, hvorefter der er undladt "d"(red. SDB5C),så kan jeg dog få 5 og 5 til at finde hinanden, men kan ikk få C og C til at finde hinanden...
dvs. selv hvis har undladt et bogstav i starten af et ord, så skal den stadig kunne sammenligne resten af ordet og evt. finde flere fejl.
Håber det gav mening !!!
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.