kostenloser Webspace werbefrei: lima-city


Mit for each ein Array beschreiben?

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    cglabs

    Kostenloser Webspace von cglabs, auf Homepage erstellen warten

    cglabs hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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
  5. 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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!