我想创建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}};
}
答案 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}};
}
}