Mit for each ein Array beschreiben?
lima-city → Forum → Programmiersprachen → Java
anfangen
array
befehl
beispiel
code
entsprechende array
final string
import
index
iteration
objekt
sagen
schein
schleife
schreibenden zugriff
sicherheit
stellen
string
tat
zahl
-
In php lässt sich mit dem Befehl "as" noch eine zusätzliche Countervariable übergeben, gibt es soetwas auch in Java? In dem Beispiel unten hätte man praktisch eine unnütze "entry" Variable, könnte man aus der irgendwie den Schleifen Count raus bekommen?
data = new String[5]; int count = 0; for(String entry : data) { data[count++] = "hallo"; }
EDIT: Ich scheine irgendwie nur Fragen zu stellen, welche nicht leicht zu beantworten sind, naja. Hab etwas gesucht, und rausgefunden, dass man den Index nur übergeben kann, wenn man eine eigene Klasse dafür verwendet. Hab auch ein Codeschnippsel von so einer Klasse gefunden, leider war das nicht voll ausprogrammiert und hatte einige Syntaxfehler. Ich hab die Fehler soweit beseitigt, nur ich kann mit dem Schnippsel nichts anfangen, da es unvollständig ist und diese Iterationssache ist etwas zu hoch für mich^^.
Ich lass mal den Schnippsel da, vielleicht kann jemand was damit anfangen und es vervollständigen oder sogar erklären, wie das funktioniert :)
Mit der With Klasse soll folgendes möglich sein
for (Index<String> each: With.index(stringArray)) { each.value; each.index; ... }
Die Width Klasse:
import java.util.Iterator; class With { public static <T> Iterable<Index<T>> index(final T[] array) { return new Iterable<Index<T>>() { public Iterator<Index<T>> iterator() { return new Iterator<Index<T>>() { int index = 0; public boolean hasNext() { return index < array.length; } public Index<T> next() { return new Index(array[index], index++); } @Override public void remove() {} }; } }; } }
Beitrag zuletzt geändert: 27.10.2010 14:32:53 von cglabs -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Moin,
das ist ja 10x umständlicher, als eine normale for- oder while-Schleife zu benutzen.
Die foreach-Schleife in Java ist dafür auch gar nicht gedacht irgendetwas mitzuzählen, sondern allein für die Iteration durch das entsprechende Array bzw. Collection um die Objekte auszulesen.
Es gäbe mit Sicherheit einen workaround um das zu lösen, in wieweit dies mit Deinem Codebeispiel geht kann ich jetzt nicht sagen.
Gruß,
Pawnee -
die for-schleife von dir wird kein einziges mal durchlaufen, weil kein element im array ist ;)
final int maxCount = 5; int count = 0; final String[] data = new String[maxCount]; while(count < maxCount) { data[count] = "hallo"; count++; }
grüße
christopher
Beitrag zuletzt geändert: 28.10.2010 17:22:29 von schaedlich -
die verkürzte Syntax der for-Schleife ist in der Tat N U R für den lesenden,nicht für den schreibenden Zugriff da
Beispiel:
int[] zahlen = {1,2,3};
for(int zahl:zahlen)
{
++zahl;
System.out.println(zahl);
}
gibt in der Tat
2
3
4
aus
die Werte im Array sind allerdings nicht geändert!
&greetinx;
WS
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage