Da jeg kiggede alle svarende igennem, og derefter kiggede min
kildetekst igennem opdagede jeg selv ret hurtigt fejlen. Fejlen var, at
i stedet for "while (n2 <= s1.length())" skulle jeg have skrevet "while
(n4 <= s1.length())".
Da jeg rettede fejlen fik jeg ingen fejlmeddelelse, men til gengæld
stod der "... er et palindrom" ligegyldig om jeg havde stavet
"regninger" rigtig eller om jeg havde skrevet "reninger" uden "g"
.... (jeg ved ikke hvorfor; måske var det noget med at x1 ikke kunne
finde ud af at skifte til og fra "true" og "false"?)
Derfor ændrede jeg programmet til at bruge "continue" eller "break"
sammen med nogle "if-statements". Nu virker programmet helt efter
hensigten, dvs., at den nu rent faktisk kan kende forskel på palindrom
eller ikke-palindrom
Jeg sender lige kildeteksten med, så I kan se den:
--------------------------------------------------------------------------------------
//Et program der undersøger, om en tekst er et palindrom.
public class Opgave346_6
{
public static void main(String[] arg)
{
String s1, s2, s3, s4;
s1 = "regninger";
s2 = "russerdressur"; //s2 har jeg ikke brugt til noget.
int n1 = 0;
int n2 = 0;
int n3 = s1.length();
int n4 = 1;
while (n4 <= s1.length())
{
s3 = s1.substring(n3-n4, n3-n2);
s4 = s1.substring(n1+n2, n1+n4);
n2++;
n4++;
if (s3.equals(s4))
continue;
else
break;
}
if (n4 == s1.length()+1)
System.out.println(s1+" er et palindrom.");
else
System.out.println(s1+" er ikke et palindrom.");
}
}
----------------------------------------------------------------------------------------
Som I kan se har jeg ændret den lidt, men hovedsagen er, at den virker
nu...
Kasper G. Christensen: "Det ville måske være til hjælp (især for
dig selv), hvis du prøvede at forklare grundprincippet i hvordan dette
skal undersøges."
Svar: Jeg havde faktisk tænkt det hele igennem og forstået det, inden
jeg spurgte om hjælp, men ellers godt råd
Flemming Mertz: "Jeg går næsten ud fra at i har fået at vide at i
kun måde bruge String klassen, for ellers ville det være oplagt at
smide din tekst der skal undersøges ind i enten en StringBuffer eller
StringBuilder, og kalde
reverse() på den..."
Svar: Faktisk går jeg ikke på noget kursus og har heller ingen
lærer; jeg prøver bare at lære mig selv java... Jeg har derfor lånt
en bog der hedder "Objektorienteret programmering i JAVA" af Jacob
Nordfalk. I bogen er der i hvert kapitel nogle opgaver, som man selv
skal lave. Denne opgave stod før der kom noget om StringBuilder - så
derfor... Men jeg er faktisk lige kommet til afsnittet om
StringBuilder, så jeg tror, at jeg vil prøve at lave det samme
program vha. den.
Mange tak for svarene!
Mvh. Laurids.