Buchstaben in einen Array einlesen und verkehrt herum ausgeben?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Okay...  Habs nochmal durchgetestet und festgestellt, dass mein Codeschnipsel aus dem Kommentar auf die Antwort von hairybear aus irgendnem Grund nicht ganz funktioniert, wie er soll...

Deshalb hier ein komplettes (und funktionierendes ;) Beispiel:

import java.util.Scanner;

class Test{
public static String reverseString(String string){
String reversed = "";
for(int i = string.length() - 1; i >= 0; --i){
reversed += string.charAt(i);
}
return reversed;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(System.getProperty("line.separator"));
String line;
while(scanner.hasNext()){
line = scanner.next();
String reversed = reverseString(line);
System.out.println(reversed);
}
}
}

P.S.: Zumindest in diesem Fall ist das Char-Array gar nicht nötig... (Zumindest nicht unbedingt... ;)


Isendrak  19.03.2017, 17:16

Nachtrag:

Hab rausgefunden, wo bei meiner vorherigen Version (die Schnipselfassung aus dem Kommentar...) das Problem (bzw. die Probleme ;) war... Ich sollte demnächst wohl doch wieder dazu übergehen, meinen Code erst zu testen, dann zu posten...

Jetzt auch mit Char-Array:

import java.util.Scanner;

class Test{
public static String reverseString(String string){
char[] chars = string.toCharArray();
for(int i = 0; i < chars.length / 2; ++i){
chars[i] = (char)(chars[i] ^ chars[chars.length-1-i]);
chars[chars.length-1-i] = (char)(chars[chars.length-1-i] ^ chars[i]);
chars[i] = (char)(chars[i] ^ chars[chars.length-1-i]);
}
return new String(chars);
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(System.getProperty("line.separator"));
String line;
while(scanner.hasNext()){
line = scanner.next();
String reversed = reverseString(line);
System.out.println(reversed);
}
}
}
1

Wo ist denn das Problem. Du speicherst den Text in das Array und gehst dann mit einer Schleife von hinten bis vorne durch.


FrancisAE 
Beitragsersteller
 19.03.2017, 12:32

Aber wie kann ich einen Array mit Buchstaben machen

0
Isendrak  19.03.2017, 12:40
@FrancisAE
String foo = "bar";
char[] baz = foo.toCharArray();

Und als Bonus noch die Umkehrung der Buchstabenfolge:

for(int i = 0; i < baz.length(); ++i){
baz[i] = (char)(baz[i] ^ baz[baz.length()-1-i]);
baz[baz.length()-1-i] = (char)(baz[baz.length()-1-i] ^ baz[i]);
baz[i] = (char)(baz[i] ^ baz[baz.length()-1-i]);
}
2
hairybear  19.03.2017, 12:44
@FrancisAE

Ich bin mit der Syntax in Java nicht vertraut, weil ich meistens in C++ programmiere.

Das Grundgerüst wurde ja grade von meinem Vorposter gelegt. Was dir da noch fehlt ist das eingelesene Array. In C könnte man das mit fgets() ermöglichen, aber in Java gibt es anscheinend ein Scanner Objekt. Am besten suchst du dir im Internet ein paar Erklärungen zu diesem Objekt und wendest sie an.

1