Stringmanipulation

f.schoma

Neues Mitglied
Hallo, ich habe folgendes Problem, ich möchte mit Hilfe der SuM-Bibliothek(s. NRW Informatikunterricht)
eine rekursive Prozedue schreiben, die in einem Wort "A" durch "*" ersetzt.
In der Bibliothek gib es eine sog. Textwerkzeug,mit dem man Strings manipulieren kann. teilzeichenkette liefert in dem folgenden Programmausschnitt so jeweils den ersten Buchstaben eines Strings.
Java:
public String wandle(String pText)
    {
        String lText;        
      if (hatTW.laenge(pText) > 0)
      {
        lText =hatTW.teilzeichenkette(pText,1,1);
        if (lText == "A")
            return hatTW.verkettung("*",
                this.wandle(hatTW.textOhne(pText,1,1)));   
        else            
            { 
                return hatTW.verkettung(hatTW.teilzeichenkette(pText,1,1),
                this.wandle(hatTW.textOhne(pText,1,1)));              }
        }
    else
        return "";
}
Die Anweisungen nach if (lText == "A") werden nun niemals ausgeführt, wie ich bei Tests herausgefunden habe. Das kann ich mir nicht erklären. Meiner Ansicht nach ist alles richtig.
Vielleicht kann mir ja jemand weiterhelfen.
 
G

Gast2

Gast
Die Anweisungen nach if (lText == "A") werden nun niemals ausgeführt, wie ich bei Tests herausgefunden habe. Das kann ich mir nicht erklären. Meiner Ansicht nach ist alles richtig.
Vielleicht kann mir ja jemand weiterhelfen.

Java:
(lText.equals("A"))

Stringvergleiche werden mit [c]equals[/c] gemacht.
 

Toralfus

Mitglied
was funzt ist
Code:
if(StringX.charAt(intPosition) == 'A')

so kannst du einzelne Char aus einem String vergleichen.
 

ruutaiokwu

Top Contributor
direkter geht's so:

String str1 = "string1";
String str2 = "string2";

if(str1.intern() == str2.intern())
{
// ...
}
else
{
// ...
}

die equals(...)-methode wird von oben herab vererbt, und prüft grundsätzlich die referenzen. beim String-objekt wird diese überschrieben - inhaltsmässig gleiche strings könnten unterschiedliche "objektreferenzen" (hashcodes) haben, deshalb das ganze...


grüsse, jan
 

Schandro

Top Contributor
... inhaltsmässig gleiche strings könnten unterschiedliche "objektreferenzen" (hashcodes) haben, deshalb das ganze...
Wo der String im Speicher liegt hat absolut nichts mit dem hashcode zu tun. Der hashcode ergibt sich aus dem Inhalt des Strings.

Das man mit == vergleicht ob es diesselbe Referenz (=dassselbe Objekt im Speicher ist), damit hast du recht.
 

Atze

Top Contributor
allerdings ist ein string der ausgeschrieben zwischen gänsefüßchen ("ich bin ein string in gänsefüßchen") immer sofort im stringpool, also intern. und den gibt beim 2. mal anlegen auch nur 1 mal!
 

Neue Themen


Oben