String rückwärts zurückgeben!

sakizzo

Mitglied
Hi Leute!

kann mir jemand erklären, wo bei mir der Fehler liegt?Ich schätze es liegt beim Rückgabewert? Kann man überhaupt ein Array als Rückgabewert definieren?
Für eure Hilfe bin ich dankbar:D

Mfg, sakizzo

Java:
import java.util.*;

public class Einrueckw {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("Bitte geben Sie ein Wort ein");
		String word = in.nextLine();
		System.out.print("Das Wort rueckwaerts: ");
		System.out.println(rueck(word));
	}

	public static String[] rueck(String word) {
		int laenge = word.length();
		int slaenge=word.length();
		String[] bla=new String[laenge];
		for(int i=0;i<slaenge;i++){
			bla[i]= word.substring(laenge-1);
			laenge--;
		}
		return bla;
	}

}
 
Zurückgeben kannst du ein Array natürlich! Aber nicht so ohne weiteres Ausgeben... Du musst noch mal mit einer Schleife über alle Elemente des Arrays laufen und sie einzeln ausgeben!

Allerdings wird dein Code so noch nicht richtig funktionieren, wenn mein flüchtiger Blick nicht trügt. Aber probiere es erst noch mal selbst - erhöht den Lerneffekt ;p

Gruß,

RoCMe
 
Man sollte laut FindBugs keine Arrays übergeben.
Du willst ja nur nen String zurückhaben, deshalb würde ich dir empfehlen ein char-Array zu machen, da jedes Feld ja eh nur ein Zeichen enthalten soll, dann kannst du es mit einer statischen Methode in der Klasse String zu nen String zurückconvertieren, bevor du den Wert zurückgibst. Statt substring bietet sich da charAt an.

Eine andere Möglichkeit wäre, dass du dir toCharArray anschauen, und einfach rückwärts durchgehen, und daraus nen neuen String zusammenbasteln.

Wenn du versuchst so eine Instanz auszugeben, wird immer die toString-Methode, die von Objekt geerbt wird ausgegeben. Hab atm. keinen Source installiert, aber die gibt glaube ich die Hashsum und noch irgendwas aus. Wenn du es so benutzen willst, müsstest du die Methode überschreiben, was bei Arrays soweit ich annehme nicht möglich ist. (Noch nie auf die Idee gekommen.)

Schau dir mal die Möglichkeiten an, damit du dich für eine die dir am besten liegt entscheiden kannst.
 
Danke Leute...!
Auch wenn mir einige Möglichkeiten unverständlich waren, habe es hinbekommen!
Alles was ich machen musste ist String einfach char zu machen und dann mit charAt...!
Ich hatte das zwar davor schon probiert, jedoch war meine Überlegung dann, aus dem char ein String zu machen, indem ich char5,4,3,2,1,0 zusammenfüge (zB)!
Also für die Leute, die die Lösung nocheinmal mit Code sehen wollen:
Java:
import java.util.*;

public class Einrueckw {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("Bitte geben Sie ein Wort ein");
		String word = in.nextLine();
		System.out.print("Das Wort rueckwaerts: ");
		System.out.print(rueck(word));
	}

	public static char[] rueck(String word) {
		int laenge = word.length();
		int slaenge=word.length();
		char[] bla=new char[laenge];
		for(int i=0;i<slaenge;i++){
			bla[i]= word.charAt(laenge-1);
			laenge--;
		}
		return bla;
	}

}
 
Hab hier mal was erstellt:

Java:
public class ReverseString {

	public static void main(String[] args) {
		// Dein Wort
		String text = "Wort";
		// Methode aufrufen um den String rückwärts auszugeben
		reverseString(text);
	}
	
	public static void reverseString(String text) {
		// Jeden Buchstaben einzeln im Array ablegen
		char[] chars = text.toCharArray();
		// Länge ermitteln
		int lenght = chars.length;
		
		// Rückwärts durchs Array laufen von hinten beginnend
		for(int i = lenght-1; i >= 0; i--) {
			System.out.print(chars[i]);
		}
	}
}

Gruß!
 
Ich denke du meinst die 2. Möglichkeit von mir.
Wenn du z. B. "lol".charAt() verwendest, bekommst du ein Array zurück, welches auf Feld 0 l, auf Feld 1 o usw. enthält. Dieses hättest du nur rückwärts in der for durchgehen brauchen. (Bei dem Wort ist es natürlich quatsch, ist ja ein Palindrom).
Mit String.valueOf() kannst du ein Char-Array wieder zu einen String machen.

Ich würde an deiner Stelle laenge anderst nennen, da die Variable, die die länge speichert eigendlich eher eine Konstante sein sollte, sonst wird das eventuell verwirrend. Eventuell in lastCharPointer oder so.
Und slaenge kannst du in der for neben "i = 0" zuweißen, so schränkst du dem Zugriff/die Sichtbarkeit darauf auf die for ein, was imho eine schönere Ordnung schafft.

Aber das sind alles nur meine Meinungen, im Endeffekt ist es natürlich deine Entscheidung.

Wenn du was nicht verstehst, dann frag ruhig. Man hört erst zum lernen auf, wenn man aufhört zu fragen, und mit Sicherheit wird dir niemand hier den Kopf abreißen. (Zumindest niemand, mit dem ich schon mal zu tun hatte.)


Edit: Ich meinte mit der 2. Variante dass, was zer0 geschrieben hat.
 
danke zero und kai,...gut, dann kenn ich jetzt also die toCharArray() Methode, die das macht, was meine kleine For Schleife gemacht hat. Es gibt für viele Methoden, die man selbst schreibt schon oft eine in der API, man muss sie nur kennen:D!
OK ich werde jetzt öfter Fragen stellen, danke für die Motivation=)

Bis zur nächsten Frage;)

sakizzo
 
Weiterhin viel Glück.
Wenn ein Thema beantwortet ist drücke bitte auf den Erledigt-Button, damit wird der Thread in der Übersicht mit einen Häckchen markiert.
 
Zurück