Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

return statement

Posted on 2014-10-29
13
136 Views
Last Modified: 2014-10-30
Hi,

I am going through below challenge solution

http://codingbat.com/prob/p140449

I have not understood below return statement.

  return (talking && (hour < 7 || hour > 20));

Please advise.
public boolean parrotTrouble(boolean talking, int hour) {
  return (talking && (hour < 7 || hour > 20));
  // Need extra parenthesis around the || clause
  // since && binds more tightly than ||
  // && is like arithmetic *, || is like arithmetic +
}
0
Comment
Question by:gudii9
  • 8
  • 4
13 Comments
 
LVL 84

Accepted Solution

by:
ozo earned 167 total points
ID: 40411054
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
&& is  Conditional-AND;  false when left operand (talking) is false, otherwise evaluate the second operand
|| is Conditional-OR;  true when the left operand (hour < 7) is true, otherwise evaluate the second operand (hour > 20)

Without the parentheses, talking && hour < 7 || hour > 20 would evaluate as ((talking && hour < 7) || hour > 20)
0
 
LVL 35

Assisted Solution

by:Kimputer
Kimputer earned 166 total points
ID: 40411072
While I don't understand the coding logic (why it returns, for what reason), interpreting the code is simple.

 parrotTrouble(True, 1) = True
 parrotTrouble(True, 8) = False
 parrotTrouble(True, 21) = True
 parrotTrouble(False, 1) = False
 parrotTrouble(False, 8) = False
 parrotTrouble(False, 21) = False

It just returns the AND of the two variables. Talking is either True or False, it's already input as the first variable.
The second part is evaluated from the second variable. If hours is below 7 OR above 20, that second part is True (otherwise False).
With these two outcomes, you do the AND operation again for the final result.
0
 
LVL 16

Assisted Solution

by:krakatoa
krakatoa earned 167 total points
ID: 40411307
>>talking && (hour < 7 || hour > 20)

Quite simply - talking has to be true, and hour has to be EITHER less than 7 OR more than 20, then a final true is returned - otherwise false is returned of course.
0
How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

 
LVL 16

Expert Comment

by:krakatoa
ID: 40411389
Thanks.

Footnote : (now you've done the challenge) -

This would be a way of splitting the logic up also :

public boolean parrotTrouble(boolean talking, int hour) {

   if (talking==false) {return talking;}
  return (hour<7||hour>20);
  
}

Open in new window

0
 
LVL 84

Expert Comment

by:ozo
ID: 40411410
//If you're going to split it up
 if( !talking ){ return false; }
  if( hour<7 ){ return true; }
  return hour>20;
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 40411421
You can do that too of course, but I was sticking to the illustration of keeping the ORs together.
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 40411427
And don't forget our old friend Mr Ternary

return talking = talking==true?hour<7||hour>20?true:false:false;

Open in new window

0
 
LVL 16

Expert Comment

by:krakatoa
ID: 40411445
This might also be an option at some point :

if ((!(talking==false))&& !((hour>6)&&(hour<21))){return true;}
           else{return false;}

Open in new window



- which is just for people who don't like ors. ;)

OR should it be :

if ((!(talking==false))&& !((hour>6)&&(hour<21))){return !false;}
           else{return !true;}

Open in new window

0
 
LVL 84

Expert Comment

by:ozo
ID: 40411496
Presumably those are just meant to be silly, but
 !((hour>6)&&(hour<21))
is not equivalent to
 (hour < 7 || hour > 20)
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 40411519
They are not silly inasmuch as they all pass the codingbat tests - so maybe the tests are silly.
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 40411540
Remember that >6 and <21 are the hours that ARE ok to speak.

(and so for the record, your ID: 40411496 is not correct).

You can look at it this way :
"<x OR >y" MUST be the complement of ">=x AND <=y".
0
 
LVL 84

Expert Comment

by:ozo
ID: 40413299
Sorry, I misread "!((>x-1)&&(<y+1))", expecting  ">=x AND <=y" (one of the reasons to avoid silly extraneous transforms)
!((hour>6)&&(hour<21)) is equivalent when hour is an int
0
 
LVL 16

Expert Comment

by:krakatoa
ID: 40413339
Right, ok.
0

Featured Post

MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Android development question 2 52
login form jsp example 2 35
printf performancy 11 67
Tagging and Merging on Branch 1 29
Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
This video teaches viewers about errors in exception handling.
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

791 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question