Inhalte eines Arrays mischen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo !

Ich plane folgendes umzusetzen. Ich möchte erstens ein Array mit zehn Stringfeldern erzeugen. Dieses Stringarray soll dann gemischt werden und dann an ein neues Array weitergegeben werden. Vorher soll überprüft werden, ob vielleicht Textinhalte aus dem ersten Array vielleicht schon im "gemischten Array" bereits vorhanden sind. Ist das der Fall, dann soll der Vorgang wiederholt werden, bis es fertig und komplett gemischt wurde. Leider erhalte ich immer wieder null-arrays und doppelte Einträge, ich verstehe nicht warum. Vielleicht könnt ihr ja einen Blick auf den Code werfen.


Code:
public class test{
	
	public static void main(String[] args){
		
		int durchläufe = 1;
		String[] array = new String[10];
		String[] mix = new String[10];
	
	
		for(int i = 0; i < array.length; i++){
	
			array[i] = "arrayspeicherplatz nummer " + i;
			System.out.println(array[i]);
				
		}
	
		System.out.println();
		System.out.println();
	
		for(int i = 0; i < mix.length; i++){
	
			int index = (int)(Math.floor(Math.random() * (9-0+1)));
			checkArray(i, durchläufe, mix, index, array);
			System.out.println(mix[index]);
				
		}
			
		
	}
	
	public static void checkArray(int i, int durchläufe, String[] mix, int index, String[] array){
		
		boolean fortsetzen;
		mix[i] = "";
		
		if(durchläufe == 1){
		
			mix[i] = array[index];
			durchläufe++;
			
		}
			
		else{
		
			do{
		
				if(! mix[i].equals(array[index])){
		
					mix[i] = array[index];
					fortsetzen = false;
			
				}
			
				else{
		
					fortsetzen = true;
					index = (int)(Math.floor(Math.random() * (9-0+1)));
			
				}
			
			}while(fortsetzen);
	
		}
		
	}	
	
}
 
Gibt es einen Grund warum du Arrays nimmst und das alles selber implementieren willst?

Das Collection Framework kann das alles schon.
 
Anonymous hat gesagt.:
Hallo !
[...]Vorher soll überprüft werden, ob vielleicht Textinhalte aus dem ersten Array vielleicht schon im "gemischten Array" bereits vorhanden sind. Ist das der Fall, dann soll der Vorgang wiederholt werden, bis es fertig und komplett gemischt wurde. Leider erhalte ich immer wieder null-arrays und doppelte Einträge, ich verstehe nicht warum.[...]

Wo genau in deinem Code machst du die Überprüfung, dass ein Textinhalt aus array nicht schon in mix vorhanden ist? Du prüfst ja immer nur die Stelle mix, nicht aber die ganzen anderen Positionen ... insofern kannst du natürlich "Dubletten" bekommen.

Ausserdem hat dein Code m.A. einen logischen Fehler: Zu Beginn der Methode setzt du mix immer auf "" und prüfst zu Beginn der do-while Schleife ob der Inhalt nicht gleich ist zu array[index]. array[index] ist jedoch immer ungleich "", insofern kommst du niemals in den else-Zweig innerhalb deiner Scheife.

Ich weiß nicht genau was du machen willst mit diesem Code, aber vielleicht lohnt sich für dich mal ein Blick auf Collections.shuffle.
 
ich prüfe das in Zeile 47 ! Leider muss ich mit
Code:
mix[i] = "";
arbeiten, weil ich sonst eine nullpointer exception erhalte[/code]
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben