Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi, habe eine methode zum erfassen von Wörten die vorne wie rückwärts das selbe bedeuten geschrieben. mein problem die methode gibt immer true aus. Danke schonmal für hilfe.
Code:
public static boolean istSatz (String satz){
String s ="";
int o = 0;
int u = s.length() - 1;
for (int i = 0; i < satz.length(); i++){
char c = satz.charAt (i);
if (Character.isLetter (c)){
if (Character.isUpperCase(c))
s = s + Character.toLowerCase(c);
else s = s + c;}}
if (o >= u){
return true;
}
if (s.charAt(u) != s.charAt (o)) {
return false;
}
else{
for (int i = 1; i < s.length()-i; i++){
s = s.substring(i, s.length()-i);}
return true;
}
}[\code]
hi, dein code macht keinen sinn....
wenn du mal einen debugger nimmst, wirst du schnell sehen, dass
o = 0 und u = -1 ist und bleibt....!!!
dann gibt er einfach true aus, weil 0>=-1 wahr ist
edit:
wobei noch zig andere seltsame Dinge danach kommen,
die Schleife im letzten else-Fall ist z.B. lustig,
macht nix sinnvolles, am Ende kommt immer 'return true'
for ( o = 0; o < satz.length(); o++){
char c = satz.charAt (o);
if (Character.isLetter (c)){
if (Character.isUpperCase(c))
s = s + Character.toLowerCase(c);
else s = s + c;}}
weglasse funktioniert jetzt alles eigentlich.
wenn ich sie mit einfüge spuckt er mir immer true aus. eigentlich sollte dieser teil doch nur die eingabe so verändern, dass alle buchstaben klein sind und satzzeichen ignoriert werden. Wie kann sie also das ergebnis beeinflussen?
public static boolean istPalindromSatz (String satz){
String s= "";
int o = 0;
int u = satz.length() - 1;
for ( o = 0; o < satz.length(); o++){
char c = satz.charAt (o);
if (Character.isLetter (c)){
if (Character.isUpperCase(c))
s = s + Character.toLowerCase(c);
else s = s + c;}}
while (o < u) {
if (s.charAt(o) != s.charAt(u)) {
return false;
}
o++;
u--;
}
das ist auf den ersten blick die lösung von oben
warscheinlich kopiert hehehe
und wenn du jetzt noch diese vollkommen sinnlose for-schleife wegnimmst und es dann auch KAPIERT hast was da passiert...
dann ... Herzlichen Glückwunsch!!
aber wenn ich die for schleife raus nehme unterscheidet mir java doch zwisdchen groß und kleinschreibung und auch satzzeichen werden nicht mehr ignoriert
Dazu hab ich auch eine frage:
welche funktion gibt es um aus einen String satz (zb: "bla& bla%)
alle sonderzeichen und leerzeichen zu entfernen, damit man palindrome über wortgrenzen hinweg erkennt?
danke für die hilfe
public class Test {
public static void main(String[] args) throws Exception {
String st = "hi d#a!sskl,jd.";
st = st.replaceAll("\\p{Punct}", "------");
System.out.println(st);
}
}
->
hi d------a------sskl------jd------