These are the hardest bugs to fix. It compiles, runs, is stable, and doesn't do what it's expected.
The first thing to do is to trace through your program, pretending to be a Java interpreter. Remember to be strict, doing exactly as your program says. This will quite often show up an obvious error. Try working with the simplest data you can think of. This will make it easier to run the program in your head. Make as many notes as you need. If you don't understand how your program is working, then you won't be able to fix it.
The next thing to do is put in a million system.out.println statements, to follow the course of the program, and see if it's doing what you think it's doing.
Make sure the program is trying to do the right thing. For example, based on your research that 2*5=10, you have found that to multiply by five, simply add 8. So you go off and write a program that correctly adds 8 to all the numbers... but doesn't "work" because you had a wrong model to start with.