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.
hvid din instans a f klassen palindrom blev oprettet med den færste constructior: public Palidrom() {
} bliver variabelen t ikke initieret med noget ord, t har så defaultværdien null og det giver fejl når du i funktionen erPal prøver at udføre funktionen t.charAt(i).
Derudover er der en grim fejl i erPal, der såvidt jeg kan se gør at koden slet ikke kan kompilere. linien lige foran 'return true;' }sf De to bogstaver 'sf' giver ingen mening og burde ikke stå der.
Tror dog at spørgeren ikke rigtig ved hvad han har gang i, så ville ikke være så hastig som jensgram og poste et svar med det samme. Det er jo nemt nok at lave en syntax-rettelse, men det lærer han jo intet af når hans compiler i forvejen havde fortalt ham det jeg skrev (bare på engelsk).
I C# kan man have flere konstruktører (og sikkert også i Java), som f.eks. tager forskellige parametere, så det er nok ikke der problemet er.
Selvom han havde en konstruktør der ikke satte "t", ville der ikke opstå fejl før man kaldet erPal metoden.
Det ser ud til at renebmadsen har svært ved simpel logik/programmering/syntax/struktur-ting i Java. Ellers ville "sf" ikke have stået der.. hvilket sådan set er den eneste rigtige fejl.. At koden ikke virker ifølge palindrom-beskrivelsen, er en anden sag.. :-)
windcape >> Det er helt iorden at have flere constructors i en klasse i Java. Den eneste begrænsning er at de hver skal have en forskellig signatur så compileren kan hitte ud af hvilken constructor man kalder når man siger 'new'. eg: Palidrom nr1 = new Palidrom(); // uden parameter bruges første constructor Palidrom nr2 = new Palidrom("windcapepacdniw"); // her bruges anden constructor
ved godt man kan lave overloading (hvorfor var det i begge glemte at skrive det tekniske navn ? :p), men i hans tilfælde var det jo ikke hvad han var ude efter, udover hans syntaxfejl.
Jeg synes man skal fokuserer på at hjælpe med problemet istedet for at give en direkte rettelse på noget forkert, det lærer folk meget mere ved.
Hvis man endelig blot vil lave en validator, hvorfor så ikke lave en statisk metode i stedet?
public class Palidrom { public static boolean erPal(String t) { for (int i = 0; i < t.length()/2; i++) { if (t.charAt(i) != t.charAt(t.length()-1-i)) { return false; } } return true; } }
Du checker kun om bostavernes placering er ens i begge ender af tekststregen, hvilket ikke giver det rigtige resultat.
Dette virker.
public class TestPalin {
public TestPalin() { System.out.println(erPal("En af dem, der red med fane")); System.out.println(erPal("Genert då åd tre neg")); System.out.println(erPal("Elsa har fat i Rita fra Hasle")); System.out.println(erPal("Degnene traf i farten en ged")); System.out.println(erPal("Tre negre med fane, en af dem er genert")); System.out.println(erPal("Hesten åd græs")); }
private boolean erPal(String original){ original = original.toLowerCase(); String s2 = ""; int x = original.length();
for (int i = 0; i < x; i++) { if(Character.isLetter( original.charAt(i))) s2 += original.substring(i,i+1); }
if(s2.equals( new StringBuffer(s2).reverse().toString() )) return true; return false; }
public static void main(String[] args) { new TestPalin(); } }
_carsten > Ja, det er helt korrekt, at man skal tage højde for store/små bogstaver, anderledes komposition og ændret tegnsætning, hvis man vil validere palindrom-sætninger.
... og ja, det er helt klart lettest at se, om strengen er identisk med den reverserede streng.
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.