Strings mit gerader und ungerader Länge ausgeben

millyrockk

Mitglied
Guten Tag, ich brauche Hilfe um eine Programmieraufgabe zu lösen, die Klausurrelevat ist.
Und zwar lautet die Aufgabe :
Ergänzen Sie die Klasse GeradeWorte um eine main-Methode, die 50 Strings von der Kon- sole einliest und anschließend zunächst jeden String mit gerader Länge und danach alle Strings ungerader Länge auf der Konsole ausgibt. Jeder dieser Strings soll in einer eigenen Zeile stehen.
Geben Sie notwendige import-Anweisungen an.
Hinweis: Die Länge eines Strings wort können Sie mit einem Aufruf von wort.length()
bestimmen. Beispiel: "Hallo".length() gibt 5 zurück.



Bis jetzt bin ich auf diesen Code gekommen :

import java.util.Scanner;

public class GeradeWorte {
public static void main(String[] args) {

Scanner sc = new Scanner (System.in);

String []wort = new String [50];


for (int i = 0; i <wort.length;i++)

wort =sc.next();

System.out.println (wort.length);

}
}
 
Zuletzt bearbeitet:
Code bitte in Code-Tags! Die drei Punkte rechts vom Smiley - Code - Java.

Weder deine main(), noch deine Klasse ist abgeschlossen (die schließenden geschweiften Klammern).

Bei der Zuweisung an das Array fehlt noch die Angabe des Index.

Es ist empfehlenswert auch bei Schleifen den Code innerhalb der Schleife in eine geschweifte Klammer zu setzen, auch, wenn es nur eine Anweisung ist.
 
Bitte immer in Code-Tags posten.
Java:
import java.util.Scanner;

public class GeradeWorte {
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);

        String[] wort = new String[50];

        for (int i = 0; i <wort.length;i++) 
            wort[i]=sc.next();

        System.out.println (wort.length);
    }
}
 
Du hast jetzt ja eine Schleife, die 50 Wörter einliest.

Du kannst doch jetzt noch eine Schleife machen und dann in der Schleife prüfen, ob die Länge des aktuellen Wortes gerade ist (Modulo 2 muss 0 ergeben). Wenn das der Fall ist, gibst du das Wort aus.

Dann die gleiche Schleife noch einmal, aber mit Prüfung auf Modulo 2 = 1 (ungerade).

Dann hättest du eine erste einfache Lösung. Bekommst du das hin?
 
Du hast jetzt ja eine Schleife, die 50 Wörter einliest.

Du kannst doch jetzt noch eine Schleife machen und dann in der Schleife prüfen, ob die Länge des aktuellen Wortes gerade ist (Modulo 2 muss 0 ergeben). Wenn das der Fall ist, gibst du das Wort aus.

Dann die gleiche Schleife noch einmal, aber mit Prüfung auf Modulo 2 = 1 (ungerade).

Dann hättest du eine erste einfache Lösung. Bekommst du das hin?
Danke!
 
Du kannst doch jetzt noch eine Schleife machen und dann in der Schleife prüfen, ob die Länge des aktuellen Wortes gerade ist
Was aber doppelten Code darstellt = unsinnig:
Java:
	static void printArray(String[] array) {
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < array.length; j++) {
				if (array[j].length() % 2 == i) {
					System.out.println(array[j]);
				}
			}
			System.out.println();
		}
	}
 
Es ist einfache Beschreibung einer geradlinigen Lösung. Was für Refactorings da Sinn machen oder nicht, steht erst einmal nicht zur Diskussion, wenn es um das Verständnis geht. Und nur um dieses ging es.

Wenn Refactorings zur Diskussion stehen sollten, dann wäre das aus meiner Sicht hier z.B. eher eine Untergliederung in Methoden. Da könnte man an so einem Beispiel auch sehr schön die entsprechende Vorgehensweise erläutern und üben.

Ohne es vertiefen zu wollen: printArray wäre meine Erwartung, dass da einfach nur das Array so ausgegeben wird, wie es ist. Die komplexe Logik ist dem Namen nicht zu entnehmen und es bedarf der Analyse des Codes oder der JavaDoc - so das vorliegt. Aber man sieht ja evtl. nur den Aufruf....
 
Wo seht ihr den Diskussionsbedarf? (Oder nur Du, neuer Account Tobias? Jemand erstellt einen Account nur für diesen Thread?)

Aufgabe ist ganz klar eine komplette Anfängeraufgabe und ich habe erläutert, wieso ich diese Art der Antwort für den Anfänger gewählt habe.

Diesem doppelten Code nehme ich da gerne in Kauf und sehe ihn im Rahmen der Erläuterung eben nicht als Unsinn an.

Und Aufgabe ist doch ganz klar nur eine main Methode. Die Unterteilung in Methoden wird vermutlich als nächster Schritt im Unterricht kommen und da wird es dann auch Parameter geben und schon kann statt zwei Methoden, die fast das gleiche machen, eine Methode mit Parameter kommen.
Das sind die Dinge, die im Unterricht wohl kommen werden und es ist in meinen Augen Unsinn, dies hier vorweg zu nehmen. Und du hast ja selbst erkannt, dass dies gemacht wurde ...
 

Zurück
Oben