almost all people have to pracitice every little bit they study. You can do that either by writing small programs or by following exercises, like those in "Thinking in Java". Write your own "reference programs" and store them in a special place for quick lookup, even for simple tasks like declaring and initializing arrays, reading a binary or text file and so on.
I'll make that a little stronger: you can't learn programming from books. Even if you absorbed everything in all those books, you would still not be a good programmer, or even a fair one. The best teacher, by far, is experience.
You've taken the first step and learned some basics: that's great. Now practice until you can write a basic I/O program without the books. It won't take long.
Would you expect to be able to pick up some books on conversational Hindi, read them for two months, and then show up India, and start speaking fluently in Hindi to the natives on day one? Probably not -- you'd expect to need some practice to supplement that reading, yes?
You may be asking too much of yourself, or have a distorted idea of how programmers work. I'll let you in on a little secret: good programmers never write big long programs all at once. You write a little, compile it, test it, and then write some more.
See if this Bowling Game Kata gives you some ideas about how to approach problems. Robert Martin illustrates writing tests for very small bits of functionality to build up a class one step at a time. There are a few more of these around if you like this one. [ March 19, 2006: Message edited by: Stan James ]
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi