2016-03-28 63 views
-2

我正在處理下面的代碼,創建一個ArrayList,對其進行隨機播放,並取前三個元素,但出於某種原因,在啓動for循環時,我在符號「;」上出現語法錯誤。爲什麼在此Java程序的for-loop定義中出現語法錯誤?

import java.util.ArrayList; 

public class cardsShuffle { 


    ArrayList<String> cards = new ArrayList<>() 

    for (int i = 0; i < 52; i++){ 
     cards.add(String.valueOf(i+1)); 
     java.util.Collections.shuffle(cards); 
    } 
    public static void main(String args[]){ 

     cardsShuffle s = new cardsShuffle(); 

     System.out.println(s.cards.get(0)); 
     System.out.println(s.cards.get(1)); 
     System.out.println(s.cards.get(2)); 

} 
+3

1)您在'new ArrayList <>()'之後缺少一個分號。 2)for循環不在任何方法內。你可以創建一個靜態方法,在其中使用for循環,並使用'ArrayList cards = myStaticMethod();'方法使用該方法初始化卡片列表。 3)即使在前兩個之後也會出現錯誤,因爲靜態方法不能引用實例變量。卡片列表必須是靜態的。 –

+0

我把循環內的主要方法,然後我不得不刪除s。從他prin.outln,它現在起作用。 – JSiu

回答

1

你行後失蹤分號「ArrayList的卡=新的ArrayList <>()」。只要把一個分號,你的代碼將無差錯:)

+1

錯!課堂上還有一個for循環。 – fabian

0

你寫的for循環外部功能。除減速以外的所有其他內容應寫入功能或塊內。

import java.util.ArrayList; 

public class CardsShuffle 
{ 
public static ArrayList<String> cards = new ArrayList<>(); 
public static void main(String args[]) 
    { 
     System.out.println(cards.get(0)); 
     System.out.println(cards.get(1)); 
     System.out.println(cards.get(2)); 
     for (int i = 0; i < 52; i++) 
     { 
      cards.add(String.valueOf(i+1)); 
      java.util.Collections.shuffle(cards); 
     } 
    } 
} 

該代碼應該是這樣的...總是要在函數內部執行的東西。

+0

您無法指定包含類的實例,您無法從「靜態」方法訪問非「靜態」字段。 – fabian

0

試試這個

import java.util.ArrayList; 

public class cardsShuffle { 

    public static void main(String args[]) { 

     ArrayList<String> cards = new ArrayList<>(); 

     for(int i = 0; i<52;i++) 
     { 
      cards.add(String.valueOf(i + 1)); 
      java.util.Collections.shuffle(cards); 
     } 
     cardsShuffle s = new cardsShuffle(); 
     System.out.println(cards.get(0)); 
     System.out.println(cards.get(1)); 
     System.out.println(cards.get(2)); 
    } 

} 
+0

試試這個問題一定會解決 –

0

你不能只是把代碼放到一個類。它需要位於方法,構造函數或初始化程序塊內部或字段初始化的RHS(不可用於循環)。

此外,您添加每張卡後無需洗牌。由於Collections.shuffle產生一個隨機置換,在循環足夠後使用它。

public class cardsShuffle { 

    // field declaration 
    ArrayList<String> cards; 

    // constructor 
    public cardsShuffle() { 
     cards = new ArrayList<>(); 

     for (int i = 0; i < 52; i++){ 
      cards.add(String.valueOf(i+1)); 
     } 

     java.util.Collections.shuffle(cards); 
    } 

    public static void main(String args[]) { 
     cardsShuffle s = new cardsShuffle(); 
     System.out.println(s.cards.get(0)); 
     System.out.println(s.cards.get(1)); 
     System.out.println(s.cards.get(2)); 
    } 

} 
相關問題