# Zufällige Gruppen erstellen



## C.Hermanos (15. Jan 2011)

Hi Leute, bin neu hier im Forum und mache seit ca. 4 Monaten Java.
Jedoch habe ich ein Problem.
Ich soll ein Programm schreiben, welches zufällig (Arbeits-)gruppen erstellt.
Dazu soll erst gefragt werden, wieviele Leute es gibt, anschließend sollen die Namen und Nachname erfasst werden.
Wenn das alles erledigt wurde, wird gefragt, wie groß die Guppen seien soll.
Wenn man z.B. 2er Gruppen eingibt und 10 Personen, soll das Programm 5 zufällge Gruppen mit jeweils 2 Personen ausgeben.
Wie mache ich das genau?

Was ich berreits habe:

```
import java.util.*;

public class Random_Groups{
  public Random_Groups(){
    
    Scanner sc = new Scanner(System.in);
    System.out.print("Wieviele Leute gibt es?: ");
    int anz_leute = sc.nextInt();


      String[] name = new String[anz_leute];
      String[] nachname = new String[anz_leute];

      for(int i = 0; i < anz_leute; i++){
      System.out.println("\nPerson" + (i + 1));
      System.out.print("Vorname: ");
      name[i] = sc.next();
      System.out.print("Nachname: ");
      nachname[i] = sc.next();

      }
    System.out.println("\nAlle Leute wurden erfolgreich aufgenommen");
    System.out.print("Wieviele Personen sollen in einer Gruppe sein? ");
    int gruppengrösse = sc.nextInt();

  }
 public static void main(String [] args){
   new Random_Groups();
 }
}
```

Nun komme ich leider nicht weiter;(
Vielen Dnak für eure Hilfe!


----------



## eRaaaa (15. Jan 2011)

Es ist immer schwer bei so etwas zu helfen, wenn keine wirkliche Frage dabei ist, denn niemand weiß genau wie weit ihr gerade seid und was ihr schon hattet.

```
String[] name = new String[anz_leute];
		String[] nachname = new String[anz_leute];
```

so etwas ist immer etwas doof und machts meist komplizierter. Wieso keine eigene Klasse Person o.ä. die dann den Namen + Vornamen trägt? Dann ein Array von Personen (oder besser eine Liste)! Dann weiß man auch nicht ob ihr schon so etwas wie Collections.shuffle kennt. Denn damit könnte man, nachdem man alle Personen eingelesen hat die Liste einfach durchmischen und dann eben entsprechend der Gruppengröße einfach die ersten x Personen zusammen stecken. Wenn ihr Listen noch nicht hattet, kannst du dir ja ein Arrays.shuffle selbst bauen(also ein durchmischen des Arrays)


----------



## C.Hermanos (15. Jan 2011)

Ersteinmal danke für deine Antwort.
Nur leider habe ich keine Ahnung wovon du sprichst ???:L (sry nichts gegen dich)

das mit dem 
	
	
	
	





```
String[] name = new String[anz_leute];
```
 ist so, wie wir es im Unterricht hatten. Eigene Klassen etc. hatten wir leider (noch) nicht.


----------



## Marco13 (15. Jan 2011)

Halb-OT: Der Hinweis "Das hatten wir noch nicht" zieht irgendwie nicht. Ihr habt auch noch nicht durchgenommen, wie man ein Programm schreibt, mit dem man zufällige Gruppen erstellt. Man MUSS auch Sachen machen, die einem der Lehrer noch nicht vorgekaut hat (und wenn man dafür eine schlechtere Note bekommt... .... ... verweise den Lehrer bitte mal an mich :hihi: )

Ansonsten... Schau dir mal die klasse java.util.Random an, und stelle dann ggf. spezifischere Fragen.


----------



## Landei (15. Jan 2011)

Wenn ihr Listen schon "hattet", gibt es eine ganz einfache Lösung: Alle Leute (z.B. als String-Array mit zwei Werten) in eine ArrayList packen, java.util.Collections.shuffle mischt die Liste durch, und dann einfach die Gruppen abzählen.


----------



## C.Hermanos (15. Jan 2011)

Kann mir vlt. jemand ein Beispielcode geben?
Es muss nicht einer sein, wo meine Arbeit erledigt sondern eher einer, wo z.B. java.util.Random; benutzt wird.
Wäre echt nett und vorallem hilfreich:applaus:


----------



## eRaaaa (15. Jan 2011)

```
public static void shuffle(Person[] array){
		Random r = new Random();
		for (int i = array.length; i > 1; i--) { //oder sonst wie...
			int firstIndex = r.nextInt(i); //zufaellige Zahl zwischen [0 und i-1]
			Person tmp = array[i-1];
			array[i-1] = array[firstIndex];
			array[firstIndex] = tmp;
		}
	}
```

Dann noch eine simple Klasse 

```
class Person{
	private String name,firstname;

	public Person(String firstname, String name) {
		this.firstname= firstname;
		this.name =name;
	}

//getter + setter ...

	@Override
	public String toString() {
		return firstname +" "+ name;
	}
}
```

und dann dein Code etwas abgeändert

```
Scanner sc = new Scanner(System.in);
		System.out.print("Wieviele Leute gibt es?: ");
		int anz_leute = sc.nextInt();

		Person[] personen = new Person[anz_leute];

		for (int i = 0; i < anz_leute; i++) {
			System.out.println("\nPerson" + (i + 1));
			System.out.print("Vorname: ");
			String vorname = sc.next();
			System.out.print("Nachname: ");
			String name = sc.next();
			personen[i] = new Person(vorname,name);

		}
		shuffle(personen); //Personen durchgemischt :)
		//TODO: gruppen bilden
```


----------

