the question is this.
suppose that i have got
rowstart=8
rowend=6
columnstart=8
columnend=8

b=0

while(pieces[rowStart-b][columnStart]==null && pieces[rowStart-b][columnStart]!=pieces[rowEnd][columnEnd] && pieces[rowEnd][columnEnd]==null){ // CHECKS THE UPPER ROW.
								   b++;	 
								  
								    }

What is the question?

To debug your code print out the value of this expression, of each of its sub expressions and of all of its variables:

(pieces[rowStart-b][columnStart]==null && pieces[rowStart-b][columnStart]!=pieces[rowEnd][columnEnd] && pieces[rowEnd][columnEnd]==null)

no, i got the idea.

pieces[rowStart-b][columnStart]==null

i need to reduce rowStart by 1
cause b is 0
and
rowStart points at an object that i am trying to point at
so i need to come up with something like that. although it did give me an outofboundarray error. i have to try to rewrite the thing again.
pieces[rowStart-1-b][columnStart]==null