Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialAra Brutian
565 PointsI'm getting "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space" while creating a do/while loop.
I'm getting "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space" while creating a do/while loop.
// I have initialized a java.io.Console for you. It is in a variable named console.
console.readLine("Do you understand do while loops? ");
String response = console.readLine("Do you understand do while loops? ");
boolean isNegation;
do {
isNegation = (response.equals("No"));
if(isNegation){
console.printf("Try Again \n\n");
};
} while(isNegation);
3 Answers
Raffael Dettling
32,999 PointsYou overthinked a bit :) But itΒ΄s good that you used equals instead of ==. You donΒ΄t need that first console.readLine("Do you understand do while loops?") line the do while loop will run at least one time and will assign the typed value to the response variable.
String response = "";
do {
response = console.readLine("Do you understand do while loops?");
} while(response.equals("No"));
Jennifer Nordell
Treehouse TeacherHi there! You have inadvertently created an infinite loop in the case where someone enters "No". You have two separate console.readLine()
statements. The first one reads in the response and throws it away. It's never assigned anywhere. The second one reads in a response and assigns it to response
. If the user now types "No" then isNegation
will evaluate to true and it will print out "Try again". And the loop will start over. The problem here is that you've not included a way for them to change the value of response because your console.readLine
is outside the loop. It will just continue looping and printing out "Try again" forever.
Here's how I did it:
String response = ""; //create an empty string
do {
response = console.readLine("Do you understand do while loops? "); // Ask the user if they understand and set the response variable to their response
} while(response.equals("No")); // If they respond with "No", run the loop again
I'll leave step 3 up to you because I am sure you can do it! Hope this helps!
Raffael Dettling
32,999 PointsThanks totally forgot the empty string^^
Ara Brutian
565 PointsThanks, Jennifer, Raffael. This really helped.