2013-04-19 14 views
39

Potrzebuję pomocy w pisaniu metody, która przetasuje ArrayList. Nie wiem, co umieścić w mojej metodzie. Oto, co mam do tej pory. Próbowałem użyć losowej metody do randomizacji liczb całkowitych na liście, ale to nie zadziałało. Czy ktoś może mi pokazać, jak to zrobić?Jak przetasować ArrayList

Oto kod próbowałem:

import java.util.ArrayList; 
import java.util.Scanner; 

public class Lab 11 { 
    public static void main(String[] args) { 
    ArrayList<Double> list = new ArrayList<Double>(); 

    Scanner input = new Scanner(System.in); 
    System.out.print("Enter integers (input ends with 0): "); 
    double value; 

    do { 
     value = input.nextDouble(); // Read a value from the input 

     if (value != 0) 
     list.add(value); // Add the value if it is not in the list 
    } while (value != 0); 
    System.out.println("The maximum number is " + max(list)); 

    System.out.print("Enter five double values: "); 
    for (int i = 0; i < 5; i++) 
     list.add(input.nextDouble()); 

    System.out.println("The sum is " + sum(list)); 

    } 

    public static Double max(ArrayList<Double> list) { 
    if (list == null || list.size() == 0) 
     return null; 

    double result = list.get(0); 
    for (int i = 1; i < list.size(); i++) 
     if (result < list.get(i)) 
     result = list.get(i); 

    return result; 
    } 

    public static double sum(ArrayList<Double> list) { 
    double sum = 0; 
    for (int i = 0; i < list.size(); i++) 
     sum += list.get(i); 
    return sum; 
    } 
} 
+5

Użyj ['Kolekcje # shuffle (Lista list)'] (http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html). – skuntsel

+0

http://pl.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm – Aurand

+1

Nie widzę, abyś używał "_random method_" w dowolnym miejscu. Wygląda na to, że nic nie próbowałeś i po prostu wkleiłeś ostatnie zadanie do pola pytania. Proszę włożyć trochę wysiłku i zadać pytanie tylko wtedy, gdy masz coś konkretnego do zapytania. Na tej stronie znajduje się wiele pytań wyjaśniających, jak losowo wybrać listę. – jahroy

Odpowiedz

97
Collections.shuffle(arrayList); 
+1

W jaki sposób wydrukujesz wynik tej przetasowanej tablicy ArrayList? – santafebound

+0

@santafebound Arrays.toString (arrayList.toArray()); –

18

Przymierz Collections.shuffle(list) .Jeżeli Wykorzystanie tej metody jest zablokowany dla rozwiązania problemu, to można spojrzeć na rzeczywistej realizacji.

+1

Oczywiście jest to zadanie domowe ... – jahroy

+0

Jeśli tak, to OP może przejść przez rzeczywistą implementację tej metody, odwołując się do rt.jar – NINCOMPOOP

+0

Ok, usunąłem kod! – NINCOMPOOP