Freiwillige Hausübung

Windows10

Bekanntes Mitglied
Mein Programm soll den String-Parameter umdrehen!!
Beispiel: Hans-->snaH

Dann soll es noch den Anfangsbuchstaben groß setzen und den Endbuchstaben klein
Dann wäre snaH-->Snah

Mein Code:
Java:
public static String spiegeln(String wort)
    {
        StringBuilder spiegel=new StringBuilder();
        int länge=wort.length();
        while(länge!=0)
        {
            char b=wort.charAt(länge-1);
            spiegel.append(b);
            länge--;
        }
        char a=wort.charAt(0);
        char b=Character.toUpperCase(a);
        länge=wort.length();
        char c=wort.charAt(länge-1);
        char d=Character.toLowerCase(c);
        spiegel.setCharAt(0,b);
        spiegel.setCharAt(länge-1,d);
        String s=spiegel.toString();
        return s;
    }

Ich finde einfach den Fehler nicht!!
 

InfectedBytes

Top Contributor
na dann überleg dir mal was du dort machst.
dein StringBuilder spiegel enthält das umgedrehte Wort.
Nun holst du dir aber vom normalen Wort das erste Zeichen und setzt das erste Zeichen von deinem StringBuilder auf dieses Zeichen.
Lösung:
Hol dir also das erste Zeichen vom gespiegelten Wort und nicht vom ursprünglichen.
Das gleiche gilt für das letzte Zeichen.

p.s.
Warum immer die unnötigen Ausrufezeichen?
 

Windows10

Bekanntes Mitglied
na dann überleg dir mal was du dort machst.
dein StringBuilder spiegel enthält das umgedrehte Wort.
Nun holst du dir aber vom normalen Wort das erste Zeichen und setzt das erste Zeichen von deinem StringBuilder auf dieses Zeichen.
Lösung:
Hol dir also das erste Zeichen vom gespiegelten Wort und nicht vom ursprünglichen.
Das gleiche gilt für das letzte Zeichen.

p.s.
Warum immer die unnötigen Ausrufezeichen?
Wenn ich es außerhalb des StringBuilders mache, geht es gar nicht mehr!!!
 

InfectedBytes

Top Contributor
du sollst auch nichts "außerhalb" vom StringBuilder machen.
Java:
char a=wort.charAt(0);
Damit holst du dir das erste Zeichen von deinem ursprünglichen Wort, im Beispiel von Hans eben das Zeichen H

Java:
spiegel.setCharAt(0,b);
Hiermit setzt du nun aber das Zeichen h an die erste Stelle von deinem StringBuilder.


Das einzige was du ändern musst, ist also das nicht das erste Zeichen von "Hans" zu holen, sondern das erste Zeichen von "snaH"
Java:
char a=spiegel.charAt(0);
Und analog für das letzte Zeichen.

Ansonsten solltest du deine Variablennamen überdenken und außerdem reicht es mehr als genug, wenn du nur ein einziges Ausrufezeichen benutzt...
 

Windows10

Bekanntes Mitglied
du sollst auch nichts "außerhalb" vom StringBuilder machen.
Java:
char a=wort.charAt(0);
Damit holst du dir das erste Zeichen von deinem ursprünglichen Wort, im Beispiel von Hans eben das Zeichen H

Java:
spiegel.setCharAt(0,b);
Hiermit setzt du nun aber das Zeichen h an die erste Stelle von deinem StringBuilder.


Das einzige was du ändern musst, ist also das nicht das erste Zeichen von "Hans" zu holen, sondern das erste Zeichen von "snaH"
Java:
char a=spiegel.charAt(0);
Und analog für das letzte Zeichen.

Ansonsten solltest du deine Variablennamen überdenken und außerdem reicht es mehr als genug, wenn du nur ein einziges Ausrufezeichen benutzt...
Aber wie soll ich das im StringBuilder ändern?
 

InfectedBytes

Top Contributor
Liest du dir die Antworten überhaupt durch?
Einfach
Java:
char a=wort.charAt(0);
mit
Java:
char a=spiegel.charAt(0);
ersetzen.

Analog für das letzte Zeichen.
 

Windows10

Bekanntes Mitglied
Liest du dir die Antworten überhaupt durch?
Einfach
Java:
char a=wort.charAt(0);
mit
Java:
char a=spiegel.charAt(0);
ersetzen.

Analog für das letzte Zeichen.
Jetzt schaut mein Code so aus, und es geht noch immer nicht.
Java:
public class Spiegeln
{
    public static String spiegeln(String wort)
    {
        StringBuilder spiegel=new StringBuilder();
        int länge=wort.length();
        while(länge!=0)
        {
            char b=wort.charAt(länge-1);
            spiegel.append(b);
            länge--;
        }
        char a=spiegel.charAt(0);
        char b=Character.toUpperCase(a);
        char c=spiegel.charAt(länge-1);
        char d=Character.toLowerCase(c);
        String s=spiegel.toString();
        return s;
    }
}
 

InfectedBytes

Top Contributor
jetzt hast du noch mehr geändert und wieder neue Fehler eingebaut, außerdem hast du auch noch das spiegel.setCharAt entfernt...
Jetzt bekommst du eine Exception, weil länge 0 ist, und du bei spiegel.charAt(länge-1) eben auf einen negativen Index zugreifen willst.

Nimm den Code aus deinem ersten Beitrag und führe die oben genannte Änderung durch.
 

Windows10

Bekanntes Mitglied
jetzt hast du noch mehr geändert und wieder neue Fehler eingebaut, außerdem hast du auch noch das spiegel.setCharAt entfernt...
Jetzt bekommst du eine Exception, weil länge 0 ist, und du bei spiegel.charAt(länge-1) eben auf einen negativen Index zugreifen willst.

Nimm den Code aus deinem ersten Beitrag und führe die oben genannte Änderung durch.
Danke, jetzt geht es
 

Neue Themen


Oben