Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
vi skal validere et ISBN nummer Kb.java er en ekstern fil som bare klarer indtastningen !!
her er den: public class afl4_2 { public static void main (String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) System.out.println("ISBN nummeret er lovligt"); if (lovlig == false) System.out.println("ISBN nummeret er IKKE lovligt"); }
public static String lovlig(String input) { boolean lovlig = false; // checker længde på input if (input.length() != 12) { lovlig = false; } else { //finder første klynge int str = input.indexOf("-"); String klynge1 = input.substring(0, str); input = input.substring(str);
//checker længde på klynger if (klynge1.length() > 5) { lovlig = false; } if (klynge2.length() > 7) { lovlig = false; } if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9) { lovlig = false; }
// //omdanner klynger til int // int kly1 = Integer.parseInt(klynge1); // int kly2 = Integer.parseInt(klynge2); // int kly3 = Integer.parseInt(klynge3);
//samler de første 3 klynger igen String udenstreg = klynge1 + klynge2 + klynge3;
//finder enkelte cifre char cif1 = udenstreg.charAt(0); int ci1 = Integer.parseInt(cif1);
char cif2 = udenstreg.charAt(1); int ci2 = Integer.parseInt(cif2);
char cif3 = udenstreg.charAt(2); int ci3 = Integer.parseInt(cif3);
char cif4 = udenstreg.charAt(3); int ci4 = Integer.parseInt(cif4);
char cif5 = udenstreg.charAt(4); int ci5 = Integer.parseInt(cif5);
char cif6 = udenstreg.charAt(5); int ci6 = Integer.parseInt(cif6);
char cif7 = udenstreg.charAt(6); int ci7 = Integer.parseInt(cif7);
char cif8 = udenstreg.charAt(7); int ci8 = Integer.parseInt(cif8);
char cif9 = udenstreg.charAt(8); int ci9 = Integer.parseInt(cif9);
char cif0 = udenstreg.charAt(9);
//checker kontrolværdi int sum = (ci1*10)+(ci2*9)+(ci3*8)+(ci4*7)+(ci5*6)+(ci6*5)+(ci7*4)+(ci8*3)+(ci9*2); sum = 11 - (sum/11);
public static String lovlig(String input) afleverer en String som du forsøger at putte over i en boolean. Det er som at krydse en hamster med en papegøje.
Nu kan det compiles, men den siger en bog jeg har, ikke har et gyldigt ISBN
public class afl4_2 { public static void main (String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = "0201310058";//Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) System.out.println("ISBN nummeret er lovligt"); if (lovlig == false) System.out.println("ISBN nummeret er IKKE lovligt"); }
public static boolean lovlig(String input) { boolean lovlig = false; // checker længde på input if (input.length() != 12) { lovlig = false; } else { //finder første klynge int str = input.indexOf("-"); String klynge1 = input.substring(0, str); input = input.substring(str);
//checker længde på klynger if (klynge1.length() > 5) { lovlig = false; } if (klynge2.length() > 7) { lovlig = false; } if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9) { lovlig = false; }
// //omdanner klynger til int // int kly1 = Integer.parseInt(klynge1); // int kly2 = Integer.parseInt(klynge2); // int kly3 = Integer.parseInt(klynge3);
//samler de første 3 klynger igen String udenstreg = klynge1 + klynge2 + klynge3;
//finder enkelte cifre char cif1 = udenstreg.charAt(0); int ci1 = Integer.parseInt(""+cif1);
char cif2 = udenstreg.charAt(1); int ci2 = Integer.parseInt(""+cif2);
char cif3 = udenstreg.charAt(2); int ci3 = Integer.parseInt(""+cif3);
char cif4 = udenstreg.charAt(3); int ci4 = Integer.parseInt(""+cif4);
char cif5 = udenstreg.charAt(4); int ci5 = Integer.parseInt(""+cif5);
char cif6 = udenstreg.charAt(5); int ci6 = Integer.parseInt(""+cif6);
char cif7 = udenstreg.charAt(6); int ci7 = Integer.parseInt(""+cif7);
char cif8 = udenstreg.charAt(7); int ci8 = Integer.parseInt(""+cif8);
char cif9 = udenstreg.charAt(8); int ci9 = Integer.parseInt(""+cif9);
char cif0 = udenstreg.charAt(9);
//checker kontrolværdi int sum = (ci1*10)+(ci2*9)+(ci3*8)+(ci4*7)+(ci5*6)+(ci6*5)+(ci7*4)+(ci8*3)+(ci9*2); sum = 11 - (sum/11);
p.s. det er ikke den pæneste måde at lave det på, men det virker :)
public class afl4_2 { public static void main (String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) { System.out.println("ISBN nummeret er lovligt"); } else { System.out.println("ISBN nummeret er IKKE lovligt"); } }
public static boolean lovlig(String input) { boolean lovlig = false; // checker længde på input // if (input.length() != 12) { // lovlig = false; } // else { //finder første klynge int str = input.indexOf("-"); String klynge1 = input.substring(0, str); input = input.substring(str+1);
//checker længde på klynger if (klynge1.length() > 5) { lovlig = false; } if (klynge2.length() > 7) { lovlig = false; } if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9) { lovlig = false; }
// //omdanner klynger til int // int kly1 = Integer.parseInt(klynge1); // int kly2 = Integer.parseInt(klynge2); // int kly3 = Integer.parseInt(klynge3);
//samler de første 3 klynger igen String udenstreg = klynge1 + klynge2 + klynge3+ctrl;
//finder enkelte cifre char cif1 = udenstreg.charAt(0); int ci1 = Integer.parseInt(""+cif1);
char cif2 = udenstreg.charAt(1); int ci2 = Integer.parseInt(""+cif2);
char cif3 = udenstreg.charAt(2); int ci3 = Integer.parseInt(""+cif3);
char cif4 = udenstreg.charAt(3); int ci4 = Integer.parseInt(""+cif4);
char cif5 = udenstreg.charAt(4); int ci5 = Integer.parseInt(""+cif5);
char cif6 = udenstreg.charAt(5); int ci6 = Integer.parseInt(""+cif6);
char cif7 = udenstreg.charAt(6); int ci7 = Integer.parseInt(""+cif7);
char cif8 = udenstreg.charAt(7); int ci8 = Integer.parseInt(""+cif8);
char cif9 = udenstreg.charAt(8); int ci9 = Integer.parseInt(""+cif9);
char cif0 = udenstreg.charAt(9); int ci10=Integer.parseInt(""+cif0);
//checker kontrolværdi int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9); // sum = 11 - (sum/11); sum=sum%11;
public class afl4_2 { public static void main (String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) System.out.println("ISBN nummeret er lovligt"); if (lovlig == false) System.out.println("ISBN nummeret er IKKE lovligt"); }
public static boolean lovlig(String input) { boolean lovlig = false; // // checker længde på input // if (input.length() != 13) // { // lovlig = false; // System.out.println("Totallængde for lang eller kort"); // System.out.println(input.length()); // } // else // { //finder første klynge int str = input.indexOf("-"); String klynge1 = input.substring(0, str); input = input.substring(str);
//checker længde på klynger if (klynge1.length() > 5) { lovlig = false; System.out.println("Klynge 1 for lang"); } if (klynge2.length() > 7) { lovlig = false; System.out.println("Klynge 2 for lang"); } if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9) { lovlig = false; System.out.println("Klynge 1+2+3 længde er ikke 9"); System.out.println(( (klynge1.length())+(klynge2.length())+(klynge3.length()))); }
// //omdanner klynger til int // int kly1 = Integer.parseInt(klynge1); // int kly2 = Integer.parseInt(klynge2); // int kly3 = Integer.parseInt(klynge3);
//samler de første 3 klynger igen String udenstreg = klynge1 + klynge2 + klynge3 + ctrl;
//finder enkelte cifre char cif1 = udenstreg.charAt(0); int ci1 = Integer.parseInt("" + cif1);
char cif2 = udenstreg.charAt(1); int ci2 = Integer.parseInt("" + cif2);
char cif3 = udenstreg.charAt(2); int ci3 = Integer.parseInt("" + cif3);
char cif4 = udenstreg.charAt(3); int ci4 = Integer.parseInt("" + cif4);
char cif5 = udenstreg.charAt(4); int ci5 = Integer.parseInt("" + cif5);
char cif6 = udenstreg.charAt(5); int ci6 = Integer.parseInt("" + cif6);
char cif7 = udenstreg.charAt(6); int ci7 = Integer.parseInt("" + cif7);
char cif8 = udenstreg.charAt(7); int ci8 = Integer.parseInt("" + cif8);
char cif9 = udenstreg.charAt(8); int ci9 = Integer.parseInt("" + cif9);
char cif0 = udenstreg.charAt(9);
//checker kontrolværdi int sum = (ci1*10)+(ci2*9)+(ci3*8)+(ci4*7)+(ci5*6)+(ci6*5)+(ci7*4)+(ci8*3)+(ci9*2); sum = 11 - (sum/11);
public class afl4_2 { public static void main(String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = "0-201-31005-8";//Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) { System.out.println("ISBN nummeret er lovligt"); } else { System.out.println("ISBN nummeret er IKKE lovligt"); } }
mit sidste eksempel, fjerner hårdt og brutalt alle '-' med det samme, og udregner derefter, dette sikre at et ISBN også verificeres hvis folk f.eks. har glemt '-'.
ups, et par små fejl:
import java.util.*;
public class afl4_2 { public static void main(String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = "0201310058";//Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) { System.out.println("ISBN nummeret er lovligt"); } else { System.out.println("ISBN nummeret er IKKE lovligt"); } }
ja og i en aflevering som jeg får 4-5 uger efter jeg er startet på skolen afleverer jeg noget vi ikke har lært endnu !! og hvad er det med løkkerne ???
som sagt svaret fra : 02/10-2002 22:11:50 er din løsning uden fejl.
Det med løkkerne er at jeg har brugt, for løkker ikke andet.
Da jeg læste til ingeniør afleverede jeg tit ting som vi ikke havde lært endnu, der var intet der forbød mig at læse foran i bogen, hvilket jeg gjorde.
Men som sagt brug løsningen fra 02/10-2002 22:11:50
Kunne ikke teste med et ISBN uden checksum da jeg ikke havde en bog ved hånden, men fejl rettet nu: public class afl4_2 { public static void main (String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) { System.out.println("ISBN nummeret er lovligt"); } else { System.out.println("ISBN nummeret er IKKE lovligt"); } }
public static boolean lovlig(String input) { boolean lovlig = false; // checker længde på input // if (input.length() != 12) { // lovlig = false; } // else { //finder første klynge int str = input.indexOf("-"); String klynge1 = input.substring(0, str); input = input.substring(str+1);
//checker længde på klynger if (klynge1.length() > 5) { lovlig = false; } if (klynge2.length() > 7) { lovlig = false; } if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9) { lovlig = false; }
// //omdanner klynger til int // int kly1 = Integer.parseInt(klynge1); // int kly2 = Integer.parseInt(klynge2); // int kly3 = Integer.parseInt(klynge3);
//samler de første 3 klynger igen String udenstreg = klynge1 + klynge2 + klynge3+ctrl;
//finder enkelte cifre char cif1 = udenstreg.charAt(0); int ci1 = Integer.parseInt(""+cif1);
char cif2 = udenstreg.charAt(1); int ci2 = Integer.parseInt(""+cif2);
char cif3 = udenstreg.charAt(2); int ci3 = Integer.parseInt(""+cif3);
char cif4 = udenstreg.charAt(3); int ci4 = Integer.parseInt(""+cif4);
char cif5 = udenstreg.charAt(4); int ci5 = Integer.parseInt(""+cif5);
char cif6 = udenstreg.charAt(5); int ci6 = Integer.parseInt(""+cif6);
char cif7 = udenstreg.charAt(6); int ci7 = Integer.parseInt(""+cif7);
char cif8 = udenstreg.charAt(7); int ci8 = Integer.parseInt(""+cif8);
char cif9 = udenstreg.charAt(8); int ci9 = Integer.parseInt(""+cif9);
char cif0 = udenstreg.charAt(9);
//checker kontrolværdi int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9); // sum = 11 - (sum/11); sum=sum%11;
Sådanne nu virker den finpudsede også med 'x' import java.util.*;
public class afl4_2 { public static void main(String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) { System.out.println("ISBN nummeret er lovligt"); } else { System.out.println("ISBN nummeret er IKKE lovligt"); } }
Helt ærligt med den attitude skal du ikke regne med hjælp i fremtiden, selvfølgelig checker jeg min kode inden jeg poster den, og den VIRKER !!!
Nu har jeg tager din ISBN og hardcodet den ind i min løsning, og gæt selv hvad resultatet er: Indtast ISBN: ISBN nummeret er lovligt
Her er koden hvis du betvivler mit svar:
public class afl4_2 { public static void main (String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = "0-13-031997-X";//Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) { System.out.println("ISBN nummeret er lovligt"); } else { System.out.println("ISBN nummeret er IKKE lovligt"); } }
public static boolean lovlig(String input) { boolean lovlig = false; // checker længde på input // if (input.length() != 12) { // lovlig = false; } // else { //finder første klynge int str = input.indexOf("-"); String klynge1 = input.substring(0, str); input = input.substring(str+1);
//checker længde på klynger if (klynge1.length() > 5) { lovlig = false; } if (klynge2.length() > 7) { lovlig = false; } if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9) { lovlig = false; }
// //omdanner klynger til int // int kly1 = Integer.parseInt(klynge1); // int kly2 = Integer.parseInt(klynge2); // int kly3 = Integer.parseInt(klynge3);
//samler de første 3 klynger igen String udenstreg = klynge1 + klynge2 + klynge3+ctrl;
//finder enkelte cifre char cif1 = udenstreg.charAt(0); int ci1 = Integer.parseInt(""+cif1);
char cif2 = udenstreg.charAt(1); int ci2 = Integer.parseInt(""+cif2);
char cif3 = udenstreg.charAt(2); int ci3 = Integer.parseInt(""+cif3);
char cif4 = udenstreg.charAt(3); int ci4 = Integer.parseInt(""+cif4);
char cif5 = udenstreg.charAt(4); int ci5 = Integer.parseInt(""+cif5);
char cif6 = udenstreg.charAt(5); int ci6 = Integer.parseInt(""+cif6);
char cif7 = udenstreg.charAt(6); int ci7 = Integer.parseInt(""+cif7);
char cif8 = udenstreg.charAt(7); int ci8 = Integer.parseInt(""+cif8);
char cif9 = udenstreg.charAt(8); int ci9 = Integer.parseInt(""+cif9);
char cif0 = udenstreg.charAt(9);
//checker kontrolværdi int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9); // sum = 11 - (sum/11); sum=sum%11;
p.s. Kig lige på hvem der har flest point i denne gruppe og spørg så dig selv igen, 'mon han aldrig tester sine ting', hvis jeg ikke gør er det godt nok utroligt jeg har fået så mange point. !
ok "ham der har mange ponts" prøv at skrive et ygyldigt isbn:
Indtast ISBN: 12345-67-89-4 ISBN nummeret er lovligt
Indtast ISBN: 12345-678-9-X ISBN nummeret er lovligt
Indtast ISBN: 1234-567-89-2 ISBN nummeret er lovligt
jeg vil da ikke udelukke at det teoretisk set godt kan ske at jeg tilfældigvis rammer 3 gyldige, men når man tæller de 10 gæt med som jeg ikke har vist dig lydder det lidt usandsynligt !!
ps. det er den attitude skyldes at min tolmodighed er ved at være brugt !!
ps. kig på hvem der er ligeglad med dine points...se på erikjacobsen, de betyder ikke noget bare lir' !!!
tingholm: prøv igen: public class afl4_2 { public static void main (String [] args) { // indtastning System.out.println("Indtast ISBN: "); String input = "12345-678-9-4";//Kb.readString();
// checker om lovlig boolean lovlig = lovlig(input);
// udskriver om lovlig if (lovlig == true) { System.out.println("ISBN nummeret er lovligt"); } else { System.out.println("ISBN nummeret er IKKE lovligt"); } }
public static boolean lovlig(String input) { boolean lovlig = false; // checker længde på input // if (input.length() != 12) { // lovlig = false; } // else { //finder første klynge int str = input.indexOf("-"); String klynge1 = input.substring(0, str); input = input.substring(str+1);
//checker længde på klynger if (klynge1.length() > 5) { lovlig = false; } if (klynge2.length() > 7) { lovlig = false; } if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9) { lovlig = false; }
// //omdanner klynger til int // int kly1 = Integer.parseInt(klynge1); // int kly2 = Integer.parseInt(klynge2); // int kly3 = Integer.parseInt(klynge3);
//samler de første 3 klynger igen String udenstreg = klynge1 + klynge2 + klynge3+ctrl;
//finder enkelte cifre char cif1 = udenstreg.charAt(0); int ci1 = Integer.parseInt(""+cif1);
char cif2 = udenstreg.charAt(1); int ci2 = Integer.parseInt(""+cif2);
char cif3 = udenstreg.charAt(2); int ci3 = Integer.parseInt(""+cif3);
char cif4 = udenstreg.charAt(3); int ci4 = Integer.parseInt(""+cif4);
char cif5 = udenstreg.charAt(4); int ci5 = Integer.parseInt(""+cif5);
char cif6 = udenstreg.charAt(5); int ci6 = Integer.parseInt(""+cif6);
char cif7 = udenstreg.charAt(6); int ci7 = Integer.parseInt(""+cif7);
char cif8 = udenstreg.charAt(7); int ci8 = Integer.parseInt(""+cif8);
char cif9 = udenstreg.charAt(8); int ci9 = Integer.parseInt(""+cif9);
char cif0 = udenstreg.charAt(9);
//checker kontrolværdi int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9); // sum = 11 - (sum/11); sum=sum%11;
Jeg er da 100% ligeglad med erikjacobsen leger helgen herinde, hvis han er ligeglad med point så forklar hvordan han har fået så mange ?
Hvis du i fremtiden gerne vil have hjælp vil jeg råde dig til at ændre din attitude, for vi er mange herinde på sitet som ikke gider høre på din attitude.
p.s. der var landet et ; pga klyt copy/paste, jeg prøvede nemlig dine ISBN numre i mit udviklingsmiljø og kun den med 'X' var gyldig pga ingen checksum, så opdagede jeg det ; som ved en fejl var landet i svaret.
jaja whatever disky, du får 50 points og jeg får ro !! (du tar' det alt for højtideligt, der er altså ikke noget på spil her !!)
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.