Hi Anthony again,
I am looking at the code, and it looks very complicated, it seems for a quite simple problem.
As I mentioned above, I encourage you to simplify all that logic by dividing your program into small pieces of code and making methods from them.
1. By making an assumption this code is correct, it is being repeated in your program at least twice. So, it means it requires to become a single method, which accomplish the single task.
2. Iterate loop simply while "true" is not a good practice, as it doesn't give you a clue, in which circumstances it would stop. Look what you have inside body of "while" loop. Might would work to add a condition in a while loop, like "while (input != exitCode)" where exitCode is equal 0? Moreover, in this case probably would work better do-while loop. Have you read about it? Check
here (<- link)
3. This should become a method also, with a meaning name, so you could look at it, and have an understanding, what is meant to do. In addition, variable "CUs" doesn't say much, I'd pick something with more meaning.
4. This code could become a method also. Maybe "defineCreditsPerTerm" or something, you know better what is meant to do.
5. Even this code could become a method, like "printStudiesStatistics" or something similar.
Hopefully you got the idea. Anyone who ever would look to your code, looking only at the method declaration, could have a clue, what program is meant to do. In this way would be the way easier to notice, where the program flow goes wrong, which method produces wrong results and many more advantages.
And this program finally should become something similar to:
It is just an example. Best luck.