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

Challenge Task 1: looping until value passes I am having difficulty with my code, i am not even sure if it is correct

Challenge Task 1: looping until value passes

I am having difficulty with my code, i am not even sure if it is correct, I am trying to move the prompting code into a do while loop and check in the while condition to see if who is "banana" so that the loop continues.

i am not sure if I get the question or its my execution which is wrong. My code is as below.

// 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 banana; do { who = console.readLine("Who's there? "); answer = (who.equalsIgnoreCase("banana")); if(answer){ console.printf("Who's there?"); } }while(answer); // Person B responds: console.printf("%s who?\n", who);

// ==== END PROMPTING CODE ====

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 banana;
do {
 who = console.readLine("Who's there?  ");
  answer = (who.equalsIgnoreCase("banana"));
  if(answer){
console.printf("Who's there?");
  }
}while(answer);
// Person B responds:
console.printf("%s who?\n", who);

// ==== END PROMPTING CODE ====

2 Answers

Craig Dennis
STAFF
Craig Dennis
Treehouse Teacher

Sorry Tinashe.

I meant:

} while(who.equalsIgnoreCase("Banana");

Pssst.. Your string who has a lowercase s and that line just says boolean, not sure what that means. You can lose the if (answer) code, because it will ask again on the next loop through.

Thanks mate. It worked. I am glad i persisted on this.

However, I got another hitch on part 2 my code is:

// Person A asks: boolean answer; String who; do{ console.printf("Knock Knock.\n");

// Person B asks and Person A's response is stored in the String who: who = console.readLine("Who's there? "); answer= (who.equalsIgnoreCase("Banana")); if(who.equalsIgnoreCase("Orange")) {console.printf("Orange you glad I didn't say Banana again?");}

}while(answer);

// Person B responds: console.printf("%s who?\n", who); But its giving me an error message. Am i missing something?

Craig Dennis
STAFF
Craig Dennis
Treehouse Teacher

Hi Tinashe!

This is super close.

Couple of hints for you...

  • Keep the knock knock in the loop
  • Do the check that you are using to store in answer in the while loop itself. No need for a variable.
  • Not sure what the banana variable is doing there, but you don't need it either.

Looking real good though.

If you are getting an error post back here. You got this!

Okay, I have kept the knock knock in the loop as wellas removed the banana variable. I am not sure if I understand what you mean by this statement - (Do the check that you are using to store in answer in the while loop itself.)

But my code looks like this now, but I cant crack it

boolean;
string who;
do{
// Person A asks:
console.printf("Knock Knock.\n");

// Person B asks and Person A's response is stored in the String who:
   who = console.readLine("Who's there?  ");
  answer= who.equalsIgnoreCase("Banana"));
  if(answer){
 console.printf("Who's there?");
                }
 }while(answer);
  // Person B responds:
console.printf("%s who?\n", who);