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 trial

Java Java Basics Perfecting the Prototype Looping until the value passes

Here 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

KnockKnock.java
/*  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

Hey 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!

Thank you. I may re-watch the video too to make sure I get 'while' and 'do'. I really appreciate it

i still dont get it what i should do here on this task ??? can any one give me the code ?

Kuhn Seo
Kuhn Seo
829 Points

You'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
alexander beltran
1,142 Points

hope 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);