This doesn't look right: if (temp == sum){ // do A } else if (temp != sum) { // do B } else { // do C } Because: If temp == sum is true, then temp != sum is false. If temp == sum is false, then temp != sum is true. So you will always fall in the "if" or the "else if" block. The "else" block is unreachable. In other words, the "// do C" part is never executed.