如何通过对象初始化数组?
问题描述:
我想做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}};
}
答
你可以做
int[][] tt = {{1, 2}, {1, 2}, {2, 2}};
fa.TT = tt;
或
fa1.TT = new int[][] {{1, 2}, {1, 2}, {2, 2}};
我建议使用小写字段名称要么。
答
数组常量只能在初始化
被用来让你无论是把它直接在变量(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;
}
}
答
以下语法:
int[][] TT={{1,2},{2,1}};
是Array Initializer语法。你可以在声明数组时使用它。你不能分开数组声明和初始化语法。
您应该改用fa1.FS = new int[]{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=new int[]{1}; //Both FS and TT give error
fa1.TT= new int[][]{{1, 2}, {1, 2}, {2, 2}};
}
}
有一个在数组声明时语法糖,你不能使用任何其它时间。你可以做'fa1.TT = new int [] [] {{1,2},{1,2},{2,2}};' –
你可以使用任何Java集合来做你想做的事情,但是正常的java数组不会让你这样做, – xelilof