array ausgabe fehlerhaft

zaberisk

Neues Mitglied
hi leute,

Wieso wird nur die hälfte des arrays gefüllt? Bitte ebenfalls um Verbesserungsvorschläge / Optimierungen, lerne gerne dazu. Wie wäre es möglich in diesem fall eine array zu erstellen, dessen größe von der for schleife bestimmt wird? bei new int[var] wird immer erwartet das ich var initialisiere..
Java:
import java.util.Arrays;

public class caller {
	public static void main (String[] args) {
		
	 int[] l = new int[10];
	
		for (int x = 0; x < 10 ;x++ ) {
			
			l[x]  = (int) (Math.random()*10)+1; //+1 um 0 in array auszuschließen
	        Arrays.sort(l);
	        System.out.println(Arrays.toString(l));
			
			}	
	}
}

Ausgabe :

Code:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 8]
[0, 0, 0, 0, 0, 0, 0, 0, 4, 8]
[0, 0, 0, 0, 0, 0, 0, 4, 8, 9]
[0, 0, 0, 0, 0, 0, 2, 4, 8, 9]
[0, 0, 0, 0, 0, 2, 4, 5, 8, 9]
[0, 0, 0, 0, 0, 4, 4, 5, 8, 9]
[0, 0, 0, 0, 0, 4, 5, 8, 9, 9]
[0, 0, 0, 0, 0, 4, 4, 5, 9, 9]
[0, 0, 0, 0, 0, 4, 4, 4, 5, 9]
[0, 0, 0, 0, 0, 4, 4, 4, 5, 9]

Vielen Dank
Ich gehe stark davon aus Arrays.sort() und Arrays.toString() falsch verwendet wurden, denn ohne sortierung gab es keine probleme
 
Zuletzt bearbeitet:
Du setzt z.B. eine 9 an die 2. Stelle. Durch das sortieren rutscht die 9 an die letzte Stelle und an der 2. Stelle ist 0. Dann überspringst du die 2. Stelle usw....
Fülle einmalig das Array und sortiere einmalig (NACH der Schleife), dann sollte alles klappen.
 
Vielen Dank


edit:

So hab eben alles überarbeitet und stelle es mal rein, falls jemand ähnliche probleme hat. (ist ein wenig spielerei mit objekten dabei)
Java:
public class caller {
	public static void main (String[] args) {
	 
		aMath d = new aMath();
		d.arrayAssign();
		d.output();
		d.maxArr();
		
	}
}
Java:
import java.util.Arrays;

public class aMath {
	private static int[] l = new int[10];
	public void arrayAssign() {
		
			for (int x = 0; x < 10 ;x++ ) {
				
				l[x]  = (int) (Math.random()*10)+1;
		              
			}
				}	
			public void output() {
			Arrays.sort(l);
			System.out.println(Arrays.toString(l));
		
			}
			private int getLength(){
				return l.length;
			}
			public void maxArr(){
			int a = getLength()-1;
			
			System.out.println(l[a]);
			
			}
		
}
 
Zuletzt bearbeitet:

Zurück
Oben