toughtrasher, I thought you said this was your major, yet you say you're a high school student. In that case, it's not too late to switch...
That said, coding is easy, if you have the established knowledge base. It's not just about knowing a "language," you need to understand the concepts behind it and you need to learn general patterns.
It's like learning a real language. If you were from the 1800s, you'd have no concept of a "television", and no ability to talk or write about it. Likewise, nothing in the English language says you have to use paragraphs, but it's a commonly used organizational structure that helps people know how to read your thoughts.
Programming is the same. You need to learn the theory and background concepts in addition to learning a language, and you need to learn the general ways people like code to look and how to read that.
I can honestly say I haven't done much programming (compared to some people) in my life. But I've also done a lot more programming than the typical CS student I encountered. I've done very little programming outside of course work and job work. But I do and have already read a lot about the subject area, theory, apis, design patterns, and concepts so I have a pretty good idea of how things should look and work once I sit down to write code. And when they don't work as I expect them to, well that's what good knowledge of how to use a debugger and familiarity with your development environment tools comes into play.
That said, if you're reading your Java book, there's a good chance you're just practicing rote memorization without understanding the concepts. Unfortunately, it's the way the curriculums are developed, and you just have to struggle it out until you get to the later courses that actually teach you what's' going on.
You may be better served by going through some other course work:
http://ocw.mit.edu/courses/electric...science-and-programming-spring-2011/index.htm
http://www.bfoit.org/itp/itp.html