Java Don';我不明白为什么是有条件的;或;接线员不为我工作?

Java Don';我不明白为什么是有条件的;或;接线员不为我工作?,java,Java,我正在做这个在线练习,其中一个问题是: 如果一个数字在13到19之间,我们会说它是“青少年” 包含全部费用给定2个int值,如果其中一个为 青少年,但不是两者都有 因此,如果传递到方法中的一个int值在13和19的范围内,我应该返回true,但如果两者都在范围内,则返回false;这是我写的代码: public boolean loneTeen(int a, int b) { if ( a >= 13 && a <= 19 || b >= 13 &

我正在做这个在线练习,其中一个问题是:

如果一个数字在13到19之间,我们会说它是“青少年” 包含全部费用给定2个int值,如果其中一个为 青少年,但不是两者都有

因此,如果传递到方法中的一个int值在13和19的范围内,我应该返回true,但如果两者都在范围内,则返回false;这是我写的代码:

 public boolean loneTeen(int a, int b) {
  if ( a >= 13 && a <= 19 || b >= 13 && b <= 19 )
  return true;
  else
  return false;
}
public boolean loneTeen(int a,int b){

如果(a>=13&&a=13&&b=13&&a=13&&b=13&&a=13&&b基本上,您只希望其中一个值
isTeen(a)
isTeen(b)
为真,那么请使用:


if((a>=13&&a=13&&b问题在于缺少大括号

理想情况下,您可以这样写:

public boolean isPersonTeen(int a) {
  if ( a >= 13 && a <= 19)
      return true;
  // If you came here means the condition failed.
  return false;
}
Hth!

如果至少有一个部分为真,| | |(或)运算符返回真。现在,如果两个部分都为真,那么至少有一个部分为真吗?答案是肯定的。这就是为什么当第一个部分评估为真时,不必检查其他部分的原因

您要查找的是异或(^)。如果只有一个部分为true,则此运算符将返回true。因此,要获得所需结果,只需将| |替换为^,如下所示:

    public boolean loneTeen(int a, int b) {
        if ( (a >= 13 && a <= 19) ^ (b >= 13 && b <= 19) )
            return true;
        else
            return false;
    }
public boolean loneTeen(int a,int b){

如果((a>=13&&a=13&&b当第一个条件为真时,| |运算符不会同时计算两个条件是件坏事:当第一个条件为真时,您需要同时检查这两个条件,因为在这种情况下,您必须确保第二个条件为假。谢谢,这带来了全新的视角。您可以使用更多的括号来纠正这一点。这是错误的,因为ds,因为
^
在操作顺序上高于
&&
。实际上,即使^的优先级高于&&,在这种情况下,很明显,^操作在两个&&操作都执行并返回其值之前无法返回值,因为它(^)需要两边的值来返回其答案。因此,我的代码,按它的方式,工作得很好。试着运行它。括号只能用于可读性,但对结果没有影响。不,您是不正确的。假设
a=10
b=15
。那么正确的答案是
(a>=13&&a=13&&b=13&&a=13&&b哦,现在我知道我错在哪里了。谢谢你的洞察力。
 isPersonTeen(a) ^ isPersonTeen(b)
    public boolean loneTeen(int a, int b) {
        if ( (a >= 13 && a <= 19) ^ (b >= 13 && b <= 19) )
            return true;
        else
            return false;
    }