2011-12-19 118 views
0

如何比较具有不同大小(不同行和列)的二维数组?比较二维数组

我有两个不同的矩阵是这样的:kuliahprior[][]hasil1[][]

我想看看hasil1中是否有kuliahprior的元素,它们有不同的大小。 我使用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();  
     } 
    } 

回答

0

我看不出任何导致一个无限循环,所以我建议检查这条线不会导致挂起:

kdbukax = peta.getKodeBuka1(kd_dosen,tahunakademik); 

请确保您没有不耐烦,并且它仍在处理结果。

您可能会尝试使用调试器,并在您认为它“挂起”的随机点暂停应用程序。你会看到它目前在哪一行。尝试在那里或在这种情况下解决问题。

而且,改变这种

String kdbukax[] = new String[MAX]; 

这样:

String kdbukax[] = null; 

没有必要创建一个数组,因为你重新分配这里的变量:

kdbukax=peta.getKodeBuka1(kd_dosen,tahunakademik); 

如果MAX真的很大,可能需要一些时间来分配一个这样大小的数组。在堆上创建数组具有这种复杂性:O(n)

+0

你不觉得它就像4个嵌套循环..是不可能的? – user1106305 2011-12-19 17:39:49