2016-03-28 15 views
-2

ArrayListを作成し、シャッフルして最初の3つの要素を取りますが、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)静的メソッドはインスタンス変数を参照できないため、最初の2つの後でもエラーが発生します。カードリストは静的でなければならない。 –

+0

メインメソッドの内側にループを置いて、削除する必要がありました。彼はprin.outlnから今すぐ動作します。 – JSiu

答えて

1

あなただけのセミコロンを入れて、あなたのコードがエラー無料になります。ライン「のArrayListカード=新しいArrayListを<>()」の後にセミコロンが欠落している:)

+1

間違っている!クラス本体にはまだforループがあります。 – fabian

0

あなたはループのために書かれています外部機能。減速以外のすべてのものは、関数またはブロック内に記述する必要があります。

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

'static'メソッドから静的でないフィールドにアクセスすることは、そのクラスを含むクラスのインスタンスを指定することなく行うことができます。 – 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はランダム置換を生成するので、ループの後に1回だけ使用すれば十分です。

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)); 
    } 

} 
関連する問題