# Zeichen aus String Array lesen



## JavaLerner123 (4. Okt 2012)

Hallo liebe Kollegen!

Die Aufgabenstellung lautet: Ein Wort/Satz einlesen und überprüfen ob es rückwärts gelesen das selbe ist wie vorwärts gelesen (Palindrom). 

Das wäre soweit kein Problem, wenn ich die Eingabe in ein Char-Array speichern könnte. Jedoch wird das Ganze zunächst in "String[] args" gespeichert und mit einem String Array kann ich leider keine einzelnen Zeichen miteinander vergleichen. Weiß jemand wie ich da vorgehe?

Ich bräuchte nur sowas wie einen Denkanstoß oder einen Tipp...

Danke bereits im Vorhinen


----------



## Gast2 (4. Okt 2012)

Du kannst einen String ganz einfach zu einem char[] Array umwandeln:
String (Java 2 Platform SE v1.4.2)

Ein noch einfacherer Weg wäre der StringBuilder mit der Methode reverse().


----------



## hüteüberhüte (4. Okt 2012)

.chartAt(int i) könnte das Problem lösen: String (Java Platform SE 6)
Der manuelle Vergleich ist schneller als reverse 
Viele Grüße!


----------



## ssoul26 (4. Okt 2012)

StringBuffer ist net schlecht

```
....


      String palindrom= "Rechtsanwalt";
      String beweis = new StringBuffer(palindrom).reverse().toString();
      if(beweis.equals(palindrom)){} ...

....
```


----------



## Gast2 (4. Okt 2012)

> Der manuelle Vergleich ist schneller als reverse


Schneller im Sinne von Performance? Ist egal, der Weg über reverse() ist lesbarer.


----------



## JavaLerner123 (4. Okt 2012)

Dankeschön Leute


----------



## JavaLerner123 (4. Okt 2012)

Da hätte ich gleich noch eine Frage... und zwar wie bestimme ich dann die Länge, wenn ich vor habe das Ganze mit charAt zu lösen (Die brauche ich ja für die for-schleife). "args.length" zählt ja nur die Wörter und nicht die Zeichen. 

Wäre echt toll wenn man mir das noch verraten könnte 

Dankeschön


----------



## ssoul26 (4. Okt 2012)

Meinst du etwas das?

```
String test = "12 23 "; // 6 Zeichen
      System.out.println(test.toCharArray().length);
```


----------



## JavaLerner123 (4. Okt 2012)

Das habe ich auch schon versucht, nur leider habe ich sowas wie ein String array: String[] args. Und mit dem kann ich nicht arbeiten


----------



## ssoul26 (4. Okt 2012)

JavaLerner123 hat gesagt.:


> Das habe ich auch schon versucht, nur leider habe ich sowas wie ein String array: String[] args. Und mit dem kann ich nicht arbeiten



Mach dir net gleich schlechte Laune Natürlich kannst du damit arbeiten du gehst halt jedes String einzeln durch und führst deine isPalindrom Methode aus:


```
...
public static void main(String  [] args){
...
for(String s :args){
...
...
//hier kannst du dann jedes einzelne String abarbeiten

}



}
```


----------



## JavaLerner123 (4. Okt 2012)

Ja, hat geklappt... Danke nochmals


----------



## JavaLerner123 (4. Okt 2012)

Nochmal ein herzliches Dankeschön für alle Supporter  ... ich bin jetzt so ziemlich fertig. Ich müsste lediglich noch wissen was das Gegenstück zu "equals" ist, da ich ja schauen muss ob das Objekt nicht dem Reverse gleicht.


----------



## ssoul26 (4. Okt 2012)

JavaLerner123 hat gesagt.:


> Nochmal ein herzliches Dankeschön für alle Supporter  ... ich bin jetzt so ziemlich fertig. Ich müsste lediglich noch wissen was das Gegenstück zu "equals" ist, da ich ja schauen muss ob das Objekt nicht dem Reverse gleicht.



Kein Problem equals liefert als Wert ein boolean zurück -> true bei Übereinstimmung ansonsten false.

Wenn es nicht gleich liefert die Methode also ein "false" zurück!


----------



## hüteüberhüte (4. Okt 2012)

EikeB hat gesagt.:


> Schneller im Sinne von Performance? Ist egal, der Weg über reverse() ist lesbarer.


Schneller (effizienter) in zweifacher hinsicht: Es müssen nur n Zeichen geprüft werden und 2. muss kein neues (oder sogar zwei neue) Objekte erstellt werden:


```
for (String s : args) {
boolean b = true;
for (int i = 0, j = s.length()-1; i < s.length()/2; i++, j--) {
if (s.charAt(i) != s.charAt(j)) {
b = false;
break;
}
}
sout(s + b);
}
```

Oder: 
	
	
	
	





```
boolean b = new StringBuilder(str).reverse().toString().equals(str);
```

Viele Grüße!

Gesendet mit Tapatalk 2


----------

