2014-02-08 110 views
0

嘿我试图用变量f填充此表的不同插槽,但我需要做一些检查行和它是在它放入之前列。我不知道如何将if语句更改为让它工作,它不断给我空指针例外。请帮忙:)Java:如何比较语句与对象?

这是需要修复的部分代码。

for (int row1 = 0; row1 < data.length; row1++) 
     { 
      for (int col1 = 0; col1<data[0].length; col1++) 
      { 
       if(col1%2 != 0) 
       { 
        data[row1][col1]= "day" + d; 
        d++; 
       } 
       else 
       { 
        Integer f = new Integer(1); 
        int col2 = 0; 
        int row3 = 0; 
        boolean rows; 
        for (int row2 = 0; row2 < data.length; row2++) 
        { 
         if(data[row2][col2].equals(f))//this one 
         { 
          rows = false; 
         } 
         else 
         { 
          rows = true; 
         } 
         col2++; 
         if(col2 >= col) 
         { 
          col2 = 0; 
         } 

         for (int col3 = 0; col3<data[0].length; col3++) 
         { 
          if(f > a) 
          { 
           f = 1; 
          } 
          else if(rows == true && data[row3][col3].equals(f))//this one 

         { 
           data[row3][col3]= f; 
          } 
          f++; 
          row3++; 
          if(row3 >= row) 
          { 
           row3 = 0; 
          } 
         } 
        } 
       } 
      } 
     } 
+3

异常会告诉你哪个行号是造成问题。哪条线负责? – keshlam

+0

提供更多的代码或完整的集合(如果可能的话)和堆栈跟踪,以便让别人得到更多的帮助。 – mikemil

+0

考虑重构此代码,嵌套的“if”或“for”语句是一种不好的做法,很难阅读 –

回答

2

正如@mikemil和@Miguel所建议的,提供更多代码并重构代码。

如果这是被投掷空指针异常的线,

if(data[row2][col2].equals(f)) 

这意味着data[row2][col2]为空。

检查空,然后再执行equals()方法

或尝试这样

if(f.equals(data[row2][col2]))