2010-03-01 51 views
0

我有以下代碼名單在Java中使用隨機數

public class ShufflingListAndArray 
{ 
    public static void main(String[] args) throws IOException 

{ 
    List services = new ArrayList (


    Arrays.asList("COMPUTER", "DATA", "PRINTER")); 

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

    Collections.shuffle(list); 


    //Collections.sort(list); 


    System.out.println("List sorting :"+ list); 
    } 
} 

編譯上述程序時,我得到了下面的錯誤。

C:\>javac ShufflingListAndArray.java 
ShufflingListAndArray.java:12: asList(java.lang.Object[] 
nnot be applied to (java.lang.String,java.lang.String,ja 
    Arrays.asList("COMPUTER", "DATA", "PRINTER")); 


     ^
ShufflingListAndArray.java:15: cannot resolve symbol 
symbol : variable rnd 
location: class ShufflingListAndArray 
    String s = services.get(rnd.nextInt(services.size())); 
         ^
ShufflingListAndArray.java:15: incompatible types 
found : java.lang.Object 
required: java.lang.String 
    String s = services.get(rnd.nextInt(services.size())); 
         ^
ShufflingListAndArray.java:17: cannot resolve symbol 
symbol : variable list 
location: class ShufflingListAndArray 
    Collections.shuffle(list); 
         ^
ShufflingListAndArray.java:19: cannot resolve symbol 
symbol : variable list 
location: class ShufflingListAndArray 
    System.out.println("List sorting :"+ list); 
             ^
5 errors 

請幫我解決errors.Thanks很多....

回答

0

嘗試:

public class ShufflingListAndArray 
{ 
    public static void main(String[] args) throws IOException 

{ 
    List services = Arrays.asList("COMPUTER", "DATA", "PRINTER"); 

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

    Collections.shuffle(list); 


    //Collections.sort(list); 


    System.out.println("List sorting :"+ list); 
    } 
} 

,看看你仍然可以得到您的RND的錯誤信息,如果你這樣做,你可以發佈完整的信息,似乎有部分內容被截斷。

0

另外你還沒有聲明列表變量:Collections.shuffle(list);

0

對我來說工作很好。使用服務,而不是名單中,隨機播放和打印時

1
... 
Arrays.asList("COMPUTER", "DATA", "PRINTER")); 

你可以從編譯器錯誤看到,它需要一個數組作爲輸入,而不是一系列字符串。你可以通過:

... 
Arrays.asList(new String[] {"COMPUTER", "DATA", "PRINTER"})); 

其次,你的「服務」的引用不使用泛型類型,因此它的內容具有編譯時類型對象,而不是字符串。相反,你想:

List<String> services = new ArrayList<String>(

三,你的變量的名稱是「服務」而不是「清單」,因此:

Collections.shuffle(services); 
在最後陳述

並且同樣。在這種情況下,編譯器幾乎完全告訴你問題是什麼。你讀過它的輸出了嗎?

+2

感謝可變參數,Arrays.asList()將愉快地將一系列字符串作爲輸入。 – 2010-03-01 12:07:09

+0

的確,實際上編譯錯誤似乎是由於類型推斷衝突 - 構造函數調用導致它想要泛型類型綁定到Object而不是String。 – 2010-03-01 14:37:37

0

這樣就解決了所有的錯誤:

List<String> services = Arrays.asList("COMPUTER", "DATA", "PRINTER"); 
    Random rnd = new Random(); 
    String s = services.get(rnd.nextInt(services.size())); 
    Collections.shuffle(services); 
    // Collections.sort(services); 
    System.out.println("List sorting :" + services); 

BTW帶S沒有任何地方使用。