tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von HonniCilest
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
307
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    vichente vichente ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    5
    Hallo zusammen,
    Ich möchte ein kleines Programm schreiben das die Obejkte in einem ArrayList permutiert. Das Problem ist, das ein java.lang.indexOutofBoundsException index 2 size 0 bei in Zeile
    Code :
    1
    
    result.add(b[y], tempArray)
    bekomme.Bitte um Rat und Hilfe.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    
    import java.util.*;
     
    public class Permutation
    {
        public ArrayList<int[]> next(ArrayList<int[]> list)
        {
            ArrayList<int[]> original = new ArrayList<int[]>();
            original = list;
            ArrayList<int[]> result = new ArrayList<int[]>();
            int[] indexOriginal = new int[original.size()];
            
            for(int i = 0; i < original.size(); i++){
                indexOriginal[i] = i;
            }
            int[] b = (int[])indexOriginal.clone();
            
            for (int k = b.length - 1; k > 0; k--) {
                int w = (int)Math.floor(Math.random() * (k+1));
                int temp = b[w];
                b[w] = b[k];
                b[k] = temp;
            }
            
            for(int y = 0; y < b.length; y++){
                int[] tempArray = original.get(y);
                result.add(b[y], tempArray);
            }
            return result;
        }
        
        public static void main(String[] args)
        {   
            Permutation p = new Permutation();
            ArrayList<int[]> liste = new ArrayList<int[]>();
            int [] arr1 = {1,1,1,1,1};
            int [] arr2 = {2,2,2,2,2};
            int [] arr3 = {3,3,3,3,3};
            int [] arr4 = {4,4,4,4,4};
            int [] arr5 = {5,5,5,5,5};
            liste.add(arr1);
            liste.add(arr2);
            liste.add(arr3);
            liste.add(arr4);
            liste.add(arr5);
            ArrayList<int[]> result = new ArrayList<int[]>();
            result = p.next(liste);
            for(int[] y:result){
                for(int i= 0; i < y.length; i++){
                    System.out.println(y[i]);
                }
            }
        }
    }
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Ich versteh den Sinn von dem ersten Index-Array nicht.

    Aber davon mal abgesehen ist das Wort Permutation nicht ein wenig übertrieben? Für mich sieht es spontan eher nach einer Shuffle-Methode aus und dafür gibt es bereits etwas:
    http://docs.oracle.com/javase/1.4.2/...ava.util.List)

    Vorausgesetzt natürlich es ist keine Schulaufgabe, wo du das selbst basteln sollst
    Geändert von HonniCilest (30.01.12 um 13:30 Uhr)
    vichente bedankt sich. 
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

Ähnliche Themen

  1. Permutation eines Arrays
    Von 'GreenDragon' im Forum PHP
    Antworten: 1
    Letzter Beitrag: 04.10.10, 09:27
  2. Permutation erzeugen
    Von Thomas Darimont im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 0
    Letzter Beitrag: 26.06.10, 11:59
  3. Permutation
    Von om1krnoy im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 17.05.10, 20:33
  4. C - Permutation mit 10 Zahlen
    Von sheester im Forum C/C++
    Antworten: 10
    Letzter Beitrag: 27.12.09, 14:52
  5. Permutation (kombinationen anzeigen)
    Von hemorieder im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 05.04.06, 11:57