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 trialXin Wang
361 PointsHere is my banana joke program. I tried so many times but I got either "code took to long" or "oh no, cannot run".
I just want to know if I did this one right
/* So the age old knock knock joke goes like this:
Person A: Knock Knock.
Person B: Who's there?
Person A: Banana
Person B: Banana who?
...as long as Person A has answered Banana the above repeats endlessly
...assuming the person answers Orange we'd see
Person B: Orange who?
...and then the punchline.
Person A: Orange you glad I didn't say Banana again?
(It's a really bad joke that makes it sound like "Aren't you glad I didn't say Banana again?")
Let's just assume the only two words passed in from the console from Person B are either banana or orange.
*/
// ====BEGIN PROMPTING CODE====
// Person A asks:
console.printf("Knock Knock.\n");
// Person B asks and Person A's response is stored in the String who:
String who;
boolean funny;
do {
who = console.readLine("Who's there? ");
funny= (who.equalsIgnoreCase("banana")
|| who.equalsIgnoreCase("orange"));
if (funny) {
// Person B responds:
console.printf("%s who?\n", who);
}
} while (funny);
// ==== END PROMPTING CODE ====
3 Answers
Ernest Grzybowski
Treehouse Project ReviewerHey Xin Wang it seems like you are close, but I think it'd be best if you started the challenge with a clean slate again and re-read the instructions.
Lets start by looking at the code and instructions given to us and we'll work through it together.
Instructions:
-------------------------------------------------------------
Now let's have our code make a joke. Read the code and comments below.
We want to move that prompting code into a do while loop. Wrap the code into a do while code block and check in the while condition to see if who is "banana" so that the loop continues.
HINT: Remember to move your who declaration outside of the do block so that it can be accessed.
-------------------------------------------------------------
Code:
/* So the age old knock knock joke goes like this:
Person A: Knock Knock.
Person B: Who's there?
Person A: Banana
Person B: Banana who?
...as long as Person A has answered Banana the above repeats endlessly
...assuming the person answers Orange we'd see
Person B: Orange who?
...and then the punchline.
Person A: Orange you glad I didn't say Banana again?
(It's a really bad joke that makes it sound like "Aren't you glad I didn't say Banana again?")
Let's just assume the only two words passed in from the console from Person B are either banana or orange.
*/
// ====BEGIN PROMPTING CODE====
// Person A asks:
console.printf("Knock Knock.\n");
// Person B asks and Person A's response is stored in the String who:
String who = console.readLine("Who's there? ");
// Person B responds:
console.printf("%s who?\n", who);
// ==== END PROMPTING CODE ====
Let's try to figure out our first step from the instructions
Instructions:
-------------------------------------------------------------
Now let's have our code make a joke. Read the code and comments below.
We want to move that prompting code into a do while loop. Wrap the code into a do while code block and check in the while condition to see if who is "banana" so that the loop continues.
HINT: Remember to move your who declaration outside of the do block so that it can be accessed.
-------------------------------------------------------------
Looks like we want to move "prompting code" into a do while loop.
Your first step will be to surround this:
// ====BEGIN PROMPTING CODE====
// Person A asks:
console.printf("Knock Knock.\n");
// Person B asks and Person A's response is stored in the String who:
String who = console.readLine("Who's there? ");
// Person B responds:
console.printf("%s who?\n", who);
// ==== END PROMPTING CODE ====
in a do while loop.
Now let's figure out whats next.
Instructions:
-------------------------------------------------------------
Now let's have our code make a joke. Read the code and comments below.
We want to move that prompting code into a do while loop. Wrap the code into a do while code block and check in the while condition to see if who is "banana" so that the loop continues.
HINT: Remember to move your who declaration outside of the do block so that it can be accessed.
-------------------------------------------------------------
We know that we must compare the String value of the who
variable and see if it equals "banana"
.
...
}while(who.equalsIgnoreCase("banana"));
This looks good. Let's try to submit!
Bummer! We get an error! We forgot to read the "note" at the bottom of the instructions!
Instructions:
-------------------------------------------------------------
Now let's have our code make a joke. Read the code and comments below.
We want to move that prompting code into a do while loop. Wrap the code into a do while code block and check in the while condition to see if who is "banana" so that the loop continues.
HINT: Remember to move your who declaration outside of the do block so that it can be accessed.
-------------------------------------------------------------
You already did this in the code posted in your question. Perfect!
Following those steps above, you should be able to successfully complete the first challenge. If you ever get another issue like this, stop and try the problem again, and re-read the instructions carefully. If you need any more help, then leave a comment. Keep coding!
aleksander dahle
1,332 Pointsi still dont get it what i should do here on this task ??? can any one give me the code ?
Kuhn Seo
829 PointsYou'd never fully understand it if someone just gave you the code. Re-Watch the videos of that section and pay more attention.
alexander beltran
1,142 Pointshope this helps:
console.printf("Knock knock ");
String who; boolean haha; do{
who = console.readLine("who there? "); haha = (who.equalIngnoreCase("banana"); } } while(who.equalsIngnoreCase("banana")); console.printf(%s who?", who); console.printf(%s you glad I didn't say Banana again?", who);
Xin Wang
361 PointsXin Wang
361 PointsThank you. I may re-watch the video too to make sure I get 'while' and 'do'. I really appreciate it