Вставить значения в двумерный массив в разных строках - PullRequest
0 голосов
/ 21 октября 2018

У меня есть функция, которая дает мне вызванный метод класса, подобного этому.Класс имеет 4 вызванных метода, а именно Printx (), PrintY (), PrintY () и PrintXZ (), как следует

 [public void printX(int a) {
        System.out.println("x is not initialized");
        x = a;
    }]
    [public void printY(int a) {
        System.out.println("y is not initialized");
        y = a;
    }, public void printY(int a) {
        System.out.println("y is not initialized");
        y = a;
    }]
    [public void printXZ(int a, int b) {
        printX(a);
        System.out.println("z is not initialized");
        z = a;
    }]
    []
    []

Я вызываю этот вывод внутри другого метода, который будет вставлять значения на основе, где вызываетсяметод существует, другая функция имеет вид

private static  int[][] getDirectMethodInnovacationMatrix(List<CtMethod<?>> Methodlist,CtModel model){
     int[][] DirectMetodInvocationMatrix=new int[Methodlist.size()][Methodlist.size()];
         for (int i = 0; i < Methodlist.size(); i++) { 
             for (CtMethod<?> invokedMethod : staticallyInvokedMethods(Methodlist.get(i),model))  {    
                               int index=Methodlist.indexOf(invokedMethod);
                            if(index!=-1) 
                    DirectMetodInvocationMatrix[i][index]=1;
                                      }
         }     return DirectMetodInvocationMatrix;
     }

Выходной сигнал, который я хочу получить, должен быть таким:

[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 1, 0, 0],[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

, где, когда я получаю вывод, подобный этому

[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

как видите, все значения одинаковы, за исключением того, что в 3-й строке отсутствует одно.кто-нибудь помочь, что я делаю не так?Я просто хочу упомянуть, что размер списка методов равен 5, а indexof дает мне значения (0,1,1,2). Я получаю, возможно, причину, потому что индекс 1 повторяется, но как я могу вставить один в индекс 1 третьей строки, вместо этого он перекрывается ввторой ряд одна позиция.

...