Methoden String Arrays

Miral

Mitglied
Hallo,

ich habe ein kleines Problem mit der Aufgabenstellung. Habe mich zwar an die Aufgabe drangesetzt, jedoch keine Idee zur Lösung, villeicht könnt ihr mir helfen.:idea:

"Schreiben Sie eine Methode, die dann für
jede Zeichenkette alle folgenden und bis auf Groß-/Kleinschreibung identischen Zeichenketten löscht.
Weil Elemente eines Feldes nicht entfernt werden können, sollen sie stattdessen auf null gesetzt und ans Ende des
Feldes verlagert werden. Dazu “schiebt” man alle folgenden Elemente um eine Position nach vorn (durch Kopieren in das jeweilige Vorgängerelement) und überschreibt das (nun überzählige) letzte Element mit null. Schließlich enthält das Feld alle Zeichenketten je einmal, in ihrer ursprünglichen Reihenfolge, gefolgt von so vielen null-Werten wie es Wiederholungen gab. Die Methode gibt die Anzahl der verbliebenen Zeichenketten zurück. Übergabe erfolgt per Kommandozeile und soll ein Feld von Zeichenketten übergeben werden. Nachher sollen die einmaligen Zeichenketten ausgegeben werden,
und zwar jede Zeichenkette auf einer eigenen Zeile, ohne zusätzliche Leerzeichen davor oder dahinter."

Java:
public class test {

	public static String feld(String[] a) {
		int b = a.length;
		String c = null;
		String[] feld = new String[b];
		for (int i = 0; i < b; i++) {
			feld[i] = a[i];

			c = feld[i];
			// System.out.println(c);
			// return c;

		}
		return c;
	}

	public static String test(String[] args) {

		if ((feld(args).equals(feld(args)))) {
			return feld(args);
		}
		return "gaga";
	}

	public static void main(String[] args) {

		System.out.println(test(args));
	}
}

Hiilllffeeee
 

Gucky

Top Contributor
Was geht nicht?
Was passiert stattdessen?
Welche Möglichkeiten gibt es deinen Fehler einzugrenzen (hast du irgendeine Idee, woran es liegen könnte)?
 

Miral

Mitglied
Das return ist auserhalb der vor schleife sonst kommt Fehlermeldung, soll aber alles inerhalb des Felds ausgeben. Nicht nur die Letzte Stelle.

Ich denke es könnte rekursiv klappen, nur fehlt mir nicht ein wie ich es schreiben soll.

Java:
public class test {

	public static String feld(String[] a) {
		int b = a.length;
		int i = 0;
		String[] feld = new String[b];
		String c = "";
		for (i = 1; i < b; i++) {

			feld[i] = a[i];

			c = feld[i];
			// System.out.println(c);
			// return c;

		}
		return c;
	}

	public static String test(String[] args) {

		if ((feld(args)).equals(feld(args))) {
			return feld(args);

		}
		return "gaga";

	}

	public static void main(String[] args) {
		// System.out.print(feld(args));
		System.out.println(test(args));
	}
}
 

Gucky

Top Contributor
Nach einem return wird aus der Methode gesprungen und nach dem Aufruf der Methode in der Methode zuvor weitergemacht. Wenn du also etwas nach dem return schreibst, dann ist das toter Code, weil du dort niemals hinkommen wirst.
Wenn du alle ausgeben willst, dann gibst du entweder das Feld zurück oder du läufst mit der Schleife drüber und machst für das feld einen SysOut.
 

Neue Themen


Oben