2010-02-28 13 views
5

Mam następujący kod:Błąd kompilacji przy uruchamianiu nowego ArrayList

import java.util.*; 
import java.io.*; 
import java.util.*; 
import java.io.*; 

public class ShufflingListAndArray 
{ 
    public static void main(String[] args) throws IOException 
    { 
    List <String> services = new ArrayList<String> (
    Arrays.asList("COMPUTER", "DATA", "PRINTER"));//here I have used List <String> services=new ArrayList<String>(Arrays.asList("COMPUTER", "DATA", "PRINTER"));// followed by next statement Satring s=Services.get(rnd.nextInt(Services.size())); 

    String s = services.get(rnd.nextInt(services.size())); 

    Collections.shuffle(list); 
    //Collections.sort(list); 
    System.out.println("List sorting :"+ list); 
    } 
} 

I kiedy skompilować program pojawia się następujący błąd:

C:\>javac ShufflingListAndArray.java 
ShufflingListAndArray.java:6: '(' or '[' expected 
    List<String> services = new ArrayList<String>(
             ^
1 error 

Czy ktoś może mi pomóc rozwiązać ten problem?

+0

Którą wersję Java używasz? Generics są obsługiwane tylko od wersji Java 5 ... – netzwerg

+0

Zastanawiam się, jak to skompilować? A może to tylko fragment kodu? Przede wszystkim rnd nie jest zadeklarowany, a lista nie jest również zadeklarowana?! – kukudas

Odpowiedz

0

I mgliście pamiętam konieczności AddAll do listy zamiast przekazując listę do ArrayLists konstruktora

2

zastąpić te pierwsze kilka linijek swojej głównej funkcji z tym:

List<String> services = Arrays.asList("COMPUTER", "DATA", "PRINTER"); 

Wzorem na Arrays.asList documentation .

(Trzeba również podwójne import java.util.*;)

EDIT:

rozważa inne odpowiedzi i komentarz dokonane na moją odpowiedź, kod wydaje się być prawidłowe, a problem jest bardziej prawdopodobne, że trzeba ją skompilować z Javą 5 (lub nowszą), która jest wersją, gdy wprowadzono Generics. Jeśli musisz uruchomić go w wersji 1.4.2 lub dowolnej wersji, usuń instancje <String>, a będziesz gotowy.

+1

Jeśli kiedykolwiek będziesz musiał zmodyfikować tę listę później, spowoduje to wyjątek UnsupportedOperationException, ponieważ lista zwrócona przez Arrays.asList jest niemodyfikowalna. Aby rozwiązać ten problem, skopiuj listę do ArrayList (lub LinkedList lub cokolwiek innego) za pomocą "copy constructor" jak w oryginalnym pytaniu lub addAll jak powiedział mkoryak. – MatrixFrog

1

Potrzebujesz 1.5 źródła lub źródła 1.6 Myślę. Albo jeszcze lepiej użyj IDE. Eclipse, NetBeans i IntelliJ są bezpłatne.

+1

Nie wziąłbym wkrótce IDE. Najpierw naucz się podstawowych pojęć poprawnie :) – BalusC

Powiązane problemy