Array - Ein paar Verständnisfragen

Chizzo

Mitglied
Java:
package feld;

public class Arrays {
	public static void main (String[] args) {
		int[] a = new int [10];
		
		for (int i=0; i<10; i++) {
			a[i]=2*i;
		}
		
		for (int i=0; i<10; i++) {
			System.out.println(a[i]+"");
		}
		System.out.println();
	}

}

Dieses Programm soll alle geraden Zahlen im Zahlenraum bis 20 angeben.

1. Wir haben nur ein Feld mit der Größe 10. Warum geht es aber trotzdem bis 20?
2. Was bringt das letzte System.out.println(); ?
 
Hallo Chizzo,
das println() bringt eine Leerzeile.

Die erste Schleife füllt das Array mit Zahlen.

Dazu wird die Laufvariable i genommen, die bei jedem Schleifen-Durchlauf 1 größer ist, und jedes mal *2 genommen.

1. Durchlauf 0*2 = 0 Arrayfeld [0]
2. Durchlauf 1*2 = 2 Arrayfeld [1]
3. Durchlauf 2*2 = 4 Arrayfeld [2]
4. Durchlauf 3*2 = 6 Arrayfeld [3]
5. Durchlauf 4*2 = 8 Arrayfeld [4]
6. Durchlauf 5*2 = 10 Arrayfeld [5]

...


In der zweiten for-Schleife wird einfach der Array-Inhalt ausgegeben.

Zum Schluss wir noch eine Leerzeile mit println() erzeugt.

Hilft dir das weiter?

EDIT:
... da war ich wohl zu langsam ^^
 
Java:
for (int i=0; i<10; i++) {
            a[i]=2*i;
        }

Das i=0 bedeutet das die Schleife bei 0 anfängt, oder?
Was bedeutet i<10? Ich bekomme ja schließlich Werte bis 18...
Und wofür steht das i++?
 
Ja, das werd ich noch alles ganz genau machen... ich hab am 12.12. Zwischenprüfung und muss bis dahin halt soviel nachholen wie nur irgendwie möglich (Ich war leider längere Zeit krank und konnte nicht an die FH und hab dadurch jetzt immense Lücken).

Wieso kann ich in meinem Beispiel da kein JOptionPane.showMessageDialog einbinden? Verträgt der sich nicht mit arrays?
 
i++ heißt das diese Laufvariable i nach jedem Schleifendurchlauf um 1 erhöht wird.
Kurzschreibweise für i = i+1;

i < 10 heißt Abbruchbedingung und besagt in diesem Fall, dass aus der Schleife ausgestiegen wird, sobald i = 10 ist. Sie läuft also von i=0 bis i=9
 
Java:
package sort;

public class sorter {
	public static void main (String[] args) {
	int[] a = {9,1,6,4,6,8,2,7,6};
	sortiere (a);
	drucke (a);
	}
	
	//Minimum im Feld ab Position i
	static int minAb(final int[] a, final int i) {
		int n = a.length;
		int m = i;
		for (int j = i+1; j>n; j++)
			if (a[j] < a[m])
				m=j;
		return m;
	}
	
	//Feld sortieren
	static void sortiere (final int [] a) {
		int n = a.length;
		int m, t;
		
		for (int i=0;9<n;i++) {
			m=minAb(a, i);
			t=a[i];
			a[i]=a[m];
			a[m]=a[t];
		}
		}
		
	static void drucke (final int[] a) {
		int n = a.length;
		for (int i=0; i<n; i++)
			System.out.print(a[i]+"");
	
	
}
}

Eigentlich soll das Programm das Feld nach den Zahlen sortieren, es gibt mir aber das Feld genauso aus wie es da steht... wo liegt der Fehler?
 
vielleicht schreibt es dir jemand, allgemein ist das aber kein sinnvolles Vorgehen,
arbeite selber!
schreibe als Text was passieren soll,
prüfe mit Ausgaben, welche Teile funktionieren, ob etwa das richtige min gefunden wird usw.
(edit: bzw. in diesem Fall ob überhaupt alle Schleifen durchlaufen werden 😉 )
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben