Я хочу создать несколько объектов класса 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}};     

}
2
Muhammad Sajjad Saleem 22 Апр 2016 в 16:15

4 ответа

Лучший ответ

Вы можете сделать либо

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

Или

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

Я предлагаю использовать нижний регистр для имен полей.

2
Peter Lawrey 22 Апр 2016 в 13:21

Константы массива могут использоваться только в инициализаторах

Таким образом, вы либо помещаете его непосредственно в переменные (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
PendingValue 22 Апр 2016 в 13:20

Ну вот:

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

        }
 }
0
Adnan Isajbegovic 22 Апр 2016 в 13:23

Ниже синтаксис:

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

Является синтаксисом инициализатора массива. Вы можете использовать его при объявлении массива. Вы не можете разделить синтаксис объявления массива и инициализатора.

Вместо этого вам следует использовать fa1.FS = new int[]{1};.

0
justAbit 22 Апр 2016 в 13:30