сравнить двумерный массив - PullRequest
0 голосов
/ 19 декабря 2011

Как сравнить двумерный массив с разными размерами (разные строки и столбцы)?

У меня есть две разные матрицы, подобные этой: kuliahprior[][] и hasil1[][].

Я хочу посмотреть, есть ли элемент kuliahprior в hasil1, они имеют разный размер.Я делаю процесс проверки методом cekKondisi().А затем вызвать его в методе cekpriorfinal(), отправив элемент hasil1[i][j].Это мой код

Но они все еще зависают .. не ошибка, просто зависают для неизвестного (извините за мой английский, спасибо)

    public String cekKondisi(int kdbuka){
        String status = " ";
        String kd_dosen; String kdbukax[] = new String[MAX]; 
        for (int i=0; i<dosenprior.length;i++){    
             kd_dosen=dosenprior[i];
             kdbukax=peta.getKodeBuka1(kd_dosen,tahunakademik);
             for (int k=0;k<kdbukax.length;k++){
                if (kdbuka==Integer.parseInt(kuliahprior[i][k]))
                   status = slotprior[i];      
            }
        }    
        return status;
    }


    public void cekpriorfinal(){
        String status [][]=new String[15][15];
        for (int i=0;i<15;i++){
            for(int j=0;j<15;j++){
               status [i][j] = cekKondisi(hasil1[i][j]);     
            }
        }   
        for (int i=0;i<15;i++){
            for (int j=0;j<15;j++){
                if (status[i][j]==" ")
                    status[i][j]="ok";
            }
        }
        for (int i=0;i<15;i++){
             for (int j=0;j<15;j++){
                System.out.print (status[i][j]+" "); 
             }
             System.out.println();    
         }
   }

1 Ответ

0 голосов
/ 19 декабря 2011

Я не могу обнаружить ничего, что вызывает бесконечный цикл, поэтому я бы посоветовал проверить, не вызывает ли эта строка зависание:

kdbukax = peta.getKodeBuka1(kd_dosen,tahunakademik);

Убедитесь, что вы не нетерпеливы и все еще работаете над результатом.

Вы можете попытаться использовать отладчик и приостановить приложение в случайной точке, где вы думаете, что оно «зависает». Вы увидите, на какой линии это было в настоящее время. Попробуйте решить проблему где-нибудь там или в этом контексте.

Кроме того, измените это

String kdbukax[] = new String[MAX]; 

к этому:

String kdbukax[] = null;

Нет необходимости создавать массив, поскольку вы переназначаете переменную здесь:

kdbukax=peta.getKodeBuka1(kd_dosen,tahunakademik);

И если MAX действительно большой, выделение массива такого размера может занять некоторое время. Создание массива в куче имеет такую ​​сложность: O(n).

...