如何通过对象初始化数组?

时间:2016-04-22 13:15:38

标签: java

我想创建DFA类的多个对象,并通过对象初始化其字段值。我不想初始化数组大小。如何使用{}直接通过对象初始化数组字段。

当我在课堂上初始化时,它的工作正常。

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

但是当我尝试通过对象进行初始化时,它就不起作用了。 在这里我的代码。

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

}

4 个答案:

答案 0 :(得分:2)

你可以做任何一次

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

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

我建议使用lowerCase作为字段名称。

答案 1 :(得分: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;

    }
}

答案 2 :(得分:0)

语法如下:

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

Array Initializer语法。在声明数组时可以使用它。您不能将数组声明和初始化语法分开。

您应该使用fa1.FS = new int[]{1};代替。

答案 3 :(得分: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}};

        }
 }