Code to find the proper index comparing 3 values for max one I have an algorithm and the idea is to move over an array choosing as index the index of the neighboring cell that has the max value.
I.e.  

if array[i + 1][j + 1] has the largest value among the 3 then move there.

  

I have 2 versions of this, but I think it can be cleaner.  

version 1:  

int maxI = i + 1;  
int maxJ = j + 1;  
if(array[i + 1][j] &gt; array[maxI][maxJ]){   
    maxI = i + 1;  
    maxJ = j;  
}  
if(array[i][j + 1] &gt; array[maxI][maxJ]){  
    maxI = i;  
    maxJ = j + 1;  
}
i = maxI;  
j = maxJ;  


version 2:  

if(LCS[i + 1][j + 1] &gt; LCS[i][j + 1] &amp;&amp; LCS[i + 1][j + 1] &gt; LCS[i + 1][j]){   
    i++;  
    j++;  
}  
else{  
    if(LCS[i][j + 1] &gt; LCS[i + 1][j]){  
        j++;  
    }  
    else{i++;}  
}  


Both versions occur in a while loop which I omitted for clarity.
How can these versions become better?
I think it's easier to follow the second version. I've extracted out some helper variables:

    final int b = array[i][j + 1];
    final int c = array[i + 1][j];
    final int d = array[i + 1][j + 1];

    if (d &gt; b &amp;&amp; d &gt; c) {
        i = i + 1;
        j = j + 1;
    } else if (b &gt; c) {
        j = j + 1;
    } else {
        i = i + 1;
    }


It seems a little bit readable for me but to be honest I'm not completely satisfied with the result.