ich habe heute mit den Array angefangen und folgenden Quelltext aus einem Buch abgetippt:
Java:
publicclassZugriff_Elemente{/**
* @param args
*/publicstaticvoidmain(String[] args){// TODO Auto-generated method stubint[] zahlen =newint[10];int[] nummern =newint[10];//Zuweisung über eine Schleife und die Eigenschaft lengthfor(int element =0; element < zahlen.length; element++)
zahlen [element]= element * element;//Ausgabe über die spezielle for - Scheifefor(int element : zahlen)System.out.println ("Der Wert ist "+ element);System.out.print ("\n\n\n");//hier wird nur dem ersten Element von Nummern der Wert 1 zugewiesen//WARUM WIRD HIER NUR DEM ERSTEN ELEMENT DER WERT 1 ZUGEWIESEN??//WARUM WIRD NICHT WIE FOLGT ZUGEWIESEN?//nummern [0] = 1;//nummern [1] = 1;//nummern [2] = 1; etc.for(int element : nummern)
nummern [element]=1;//Ausgabefor(int element : nummern)System.out.println ("Der Wert ist "+ element);System.out.printf ("\n\n\n");//hier wird nur der Wert der Variablen element verändert, aber nicht der//Wert im Arrayfor(int element : nummern)
element =1;// Ausgabe//DIE AUSGABE HIER SIEHT GENAU SO AUS WIE DIE AUSGABE OBEN, WARUM??//HIER WIRD DOCH NUR DER WERT DER VARIABLEN VERÄNDERT??for(int element : nummern)System.out.println ("Der Wert ist "+ element);System.out.print ("\n\n\n");for(int element : zahlen)
zahlen [element]=1;}}
Ich habe meine Fragen in GROSSBUCHSTABEN in den Quelltext geschrieben.
Ja, so würde ich es normal auch lösen, aber in diesem Listing wurde es eben mit einer anderen Art der for -Schleife gelöst, und das kapiere ich nicht so ganz, wo in deiser speziellen for - Schleife der Fehler ist?
//WARUM WIRD HIER NUR DEM ERSTEN ELEMENT DER WERT 1 ZUGEWIESEN??
//WARUM WIRD NICHT WIE FOLGT ZUGEWIESEN?
//nummern [0] = 1;
//nummern [1] = 1;
//nummern [2] = 1; etc.
for (int element : nummern)
nummern [element] = 1;
Die Antwort kannst du dir selbst erarbeiten, indem du die Schleife mal änderst in
Code:
for (int element : nummern)
{
System.out.println("Setze nummern["+element+"] auf 1");
nummern [element] = 1;
}
(oder, alternativ, mal vorher den "nummern"-Array ausgeben.)
Danke für die Antwort.
Dass zehn mal der Wert 1 in das erste Element des Arrays geschrieben wird, wusste ich auch schon.
Aber ich möchte, dass der Wert 1 in jedes Element geschrieben wird?
ein Array hat immer gleich viele Einträge, so viele, wie bei der Initialisierung angegeben werden. Willst du ein Element, welches nicht in der Range 0 - (n-1) bei einer Länge n liegt, verwenden oder editieren, kriegst du eine IndexOutOfBoundsException.
Also wenn du einfach alle Einträge des Array's "a" auf 1 schreiben willst, dann so:
Java:
for(int i =0; i < a.length; i++){
a[i]=1;}
Wenn du alle Einträge mit den in "b" gespeicherten Indexes in "a" auf 1 setzen willst, dann so: