2015-08-25 118 views
-1

做一些Codingbat练习,return talking;如何工作? 该代码是以下练习的工作解决方案:返回一个声明的布尔值?

我们有一个响亮的说话的鹦鹉。 “小时”参数是当前小时在0..23范围内的时间。如果鹦鹉在说话,我们遇到麻烦,时间在7点之前或20点之后。如果我们遇到麻烦,则返回真实。 例子:

parrotTrouble(true, 6) → true 
parrotTrouble(true, 7) → false 
parrotTrouble(false, 6) → false 

解决方案:

public boolean parrotTrouble(boolean talking, int hour) 
{ 
    if (hour < 7 || hour > 20) { 
    return talking; 
    } 
    else { 
    return false; 
    } 
} 

如何以及为什么return talking;工作?这是一个Java快捷方式吗?

+0

这就是变量是如何工作的。什么让你感到困惑? – resueman

+0

我对这个意思感到困惑,我正在阅读它:“如果小于7并且大于20,返回(字的值为true或false)。 – CodeBoy

回答

1

parrotTrouble方法的返回类型是boolean,这意味着它可以返回任何布尔字面truefalse)或可变,这是通过在作为参数(talking)甚至一个。

逻辑相当于这其中只使用布尔文字作为返回值(更详细)版本:

public boolean parrotTrouble(boolean talking, int hour) { 
    if (hour < 7 || hour > 20) { 
     if (talking) { 
      return true; 
     } else { 
      return false; 
     } 
    } else 
     return false; 
} 

正如你所看到的,为if (talking)检查是多余的,因为你可能也返回变量本身。

+0

晶莹剔透,谢谢 – CodeBoy

0

如果是白天,则返回false,因为没有问题。

如果是夜间,则返回值为talking
如果talkingtrue,则返回true,表示有麻烦。
如果talkingfalse,则返回false,表示没有问题。 (?)

一个更好更简单的实现将是:

public static boolean parrotTrouble(boolean talking, int hour) { 
    return (talking && (hour < 7 || hour > 20)); 
} 

思想:我可能会说, “20后” 是指hour >= 20,因为在20:01,这是 “20后”。只有在下午8点的确切时间是=不正确,你需要一秒钟的时间才能知道。

0

根据您的问题定义,如果时间在20:00 - 06:59的时间范围内,我们只能遇到麻烦。如果我们发现情况是这样,关于我们是否陷入困境的解决方案等于鹦鹉是否在说话,即如果我们有talking == true那么我们也有trouble == true,因此我们可以直接返回talking的值。

0

talking不是一个“单词”,它是一个boolean值。它可以是truefalse。您的方法返回boolean,因此可以返回truefalsereturn talking;行仅仅意味着“返回传入的值”。换句话说,如果通过truefalse,如果在上午7点到下午8点之间通过false,则此方法返回true

0

你没有UNE说话参数去决定回报,我建议这样的代码:

public static boolean parrotTrouble(boolean talking, int hour) 
{ 
    if (((hour < 7 || hour > 20) && talking) || (hour >= 7 && hour <= 20 && !talking)) 
     return true; 
    else 
     return false; 
}