Hallo Leute,
derzeit versuche ich einen Filter für String-Arrays zu erstellen.
Es gib eine gewisse "Schranke" für die länge der jeweilige Strings in einem Array die nicht überboten werden darf.
Kleines Beispiel: Schranke: 5; String-Array:"Hallo","wie","geht","es","dir","Markus";
Wenn ich das Array durch den Filter laufen lasse soll dann folgendes Array zurückkommen:"wie","geht","es","dir". Dementsrechend werden "Hallo" und "Markus" aus dem Array geworfen, da sie länger bzw. gleich der Schranke sind.
Das hier ist mein Entwurf:
Mein Problem ist allerdings, dass es nicht immer funktioniert.
Wenn ich jetzt z.B. als Args(5 abc 1234 dontaskme 4321 d zulang) nehme. Funktioniert es.
Wenn ich bei allerdings die Schranke auf 4 setzte kommt abc null raus. Wie kann das sein?
derzeit versuche ich einen Filter für String-Arrays zu erstellen.
Es gib eine gewisse "Schranke" für die länge der jeweilige Strings in einem Array die nicht überboten werden darf.
Kleines Beispiel: Schranke: 5; String-Array:"Hallo","wie","geht","es","dir","Markus";
Wenn ich das Array durch den Filter laufen lasse soll dann folgendes Array zurückkommen:"wie","geht","es","dir". Dementsrechend werden "Hallo" und "Markus" aus dem Array geworfen, da sie länger bzw. gleich der Schranke sind.
Das hier ist mein Entwurf:
Java:
public class ArrayFilter {
public static String[] filter(int schranke, String[] aList) {
int l = aList.length;
String[] kopie = new String[l];
for (int i = 0; i < aList.length; i++) {
kopie[i] = aList[i];
}
for (int i = 0; i < kopie.length; i++) {
if (kopie[i].length() >= schranke) {
kopie[i] = null;
l = l -1;
}
}
for (int i = 0; i < kopie.length; i++) {
String a = kopie[i];
if (a == null) {
for (int t = i; t < kopie.length - 1; t++) {
kopie[t] = kopie[t + 1];
}
}
}
String[] kopie2 = new String[l];
for(int s = 0; s < l; s++){
kopie2[s] = kopie[s];
}
return kopie2;
}
public static void main(String[] args) {
int schranke = Integer.parseInt(args[0]);
String[] liste = new String[args.length - 1];
for (int i = 0; i < liste.length; i++)
liste[i] = args[i + 1];
String[] bList = filter(schranke, liste);
for (int i = 0; i < bList.length; i++)
System.out.println(bList[i]);
}
}
Mein Problem ist allerdings, dass es nicht immer funktioniert.
Wenn ich jetzt z.B. als Args(5 abc 1234 dontaskme 4321 d zulang) nehme. Funktioniert es.
Wenn ich bei allerdings die Schranke auf 4 setzte kommt abc null raus. Wie kann das sein?