2016-04-22 21 views
2

私は、DFAクラスの複数のオブジェクトを作成し、オブジェクトのフィールド値を初期化する必要があります。私は配列のサイズを初期化したくありません。 {}を使用してオブジェクトを介して配列フィールドを直接初期化する方法。オブジェクトから配列を初期化する方法は?

私はそのクラスの作業のように初期化するとうまくいきます。

しかし、私はオブジェクトを介してそのようにinitilizeしようとすると、その動作しません。 ここに私のコード。

public class DFA { 

    int[][] TT; 
    int IS; 
    int[] FS; 
} 
public static void main(String[] args) { 

    DFA fa1=new DFA(); 
    fa1.IS=0; 
    fa1.FS={1};      //Both FS and TT give error 
    fa1.TT={{1, 2}, {1, 2}, {2, 2}};  

} 
+0

糖衣構文を使用すると、他の時間を使うことができないことを、配列の宣言時にあります。 'fa1.TT = new int [] {] {{1,2}、{1,2}、{2,2}};' –

+0

あなたはどんなJava Collectionを使っても構いませんが、通常のJava配列ではそうすることはできませんが、 – xelilof

答えて

2

あなたは、私は、フィールド名に小文字を使用することをお勧めのいずれか

int[][] tt = {{1, 2}, {1, 2}, {2, 2}}; 
fa.TT = tt; 

または

fa1.TT = new int[][] {{1, 2}, {1, 2}, {2, 2}}; 

を行うことができます。構文以下

0

配列定数は、あなたが変数(int[] FS = { 1 };)で直接それを置くか、あなたが最初の配列を初期化すると、それを行う初期化子

のみを使用することができます。

public class DFA { 

    int[][] TT; 
    int IS; 
    int[] FS = { 1 }; 

    public static void main(String[] args) { 

     DFA fa1 = new DFA(); 
     fa1.IS = 0; 
     int[] tmpFS = { 1 }; 
     fa1.FS = tmpFS; 
     int[][] tmpTT = { { 1, 2 }, { 1, 2 }, { 2, 2 } }; 
     fa1.TT = tmpTT; 

    } 
} 
0

int[][] TT={{1,2},{2,1}}; 

Array Initializer構文は次のとおりです。配列を宣言しているときに使用できます。配列の宣言とイニシャライザの構文を区別することはできません。

代わりにfa1.FS = new int[]{1};を使用してください。ここで

0

あなたが行く:

public class DFA { 

     int[][] TT; 
     int IS; 
     int[] FS; 

     public static void main(String[] args) { 

      DFA fa1=new DFA(); 
      fa1.IS=0; 
      fa1.FS=new int[]{1};      //Both FS and TT give error 
      fa1.TT= new int[][]{{1, 2}, {1, 2}, {2, 2}}; 

     } 
} 
関連する問題