Is my N-drome (variation of palindrome) checking program efficient?
I'm not a Java programmer, but I'll point out some familiar syntactical things I see:


You should separate the logic by putting the checking code into a separate function, leaving main() to call the function, handle the input/output, and terminate when needed.
What is the purpose of y?  From the looks of it, it's used to hold an "error condition" for indicating whether or not the inputted string is an N-drome.  If so, I think this should be a boolean type and given a relevant name.  Either way, y should be renamed to reflect its purpose.

What about strings a and b?  Are they the leftmost one and the rightmost one for the original string?  You should write out the purpose of these single-char variables to give them more meaning.
The lack of an increment value in the for-loop doesn't look too clear.  If someone wanted to see what the loop should do after each iteration, they would have to fish through the loop body.  If the loop won't be incremented in each control path, then it may not be the best loop type to use.
I'm not familiar with break here, but it looks like a goto in C++.  I don't think something like that should be done with a loop (or probably anything practical).  Again, you may need to rethink how you approach this loop type and execution.