逻辑OR和逻辑OR被java搞糊涂了?

逻辑OR和逻辑OR被java搞糊涂了?,java,android,logical-operators,Java,Android,Logical Operators,我使用这种方法是为了检查一个链接是否有效,但当我使用逻辑链接或它不起作用时,它起作用,但当我使用逻辑链接时,它就起作用了,这很奇怪。你觉得怎么样 public String verification() { String lien = URL.getText().toString(); if(titre.getText().toString().isEmpty()) { return "titreEmpty"; } else if (l

我使用这种方法是为了检查一个链接是否有效,但当我使用逻辑链接或它不起作用时,它起作用,但当我使用逻辑链接时,它就起作用了,这很奇怪。你觉得怎么样

   public String verification() {
    String lien = URL.getText().toString();
    if(titre.getText().toString().isEmpty())
    {
        return "titreEmpty";
    }
   else if (lien.isEmpty()) {
        return "UrlEmpty";
    } else if (!lien.contains("http")) {
        return "notALink";
    } else if (!lien.contains("skydrive") || !lien.contains("youtube") ) { //the logical OR doesn't work 
        return "linkInvalid";
    }

    return "bon";
你用的是“!”所以这意味着如果某个东西不等于另一个东西

你说的是这句话,对吗

else if (!lien.contains("skydrive") && !lien.contains("youtube") )
使用简单的文字,并在lien不包含skydrive和youtube时激活, 或者在lien不包含skydrive或youtube时激活,这意味着它将一直激活

你只是因为“!”而感到困惑:p

你使用的是“!”,这意味着如果某个东西不等于另一个东西

你说的是这句话,对吗

else if (!lien.contains("skydrive") && !lien.contains("youtube") )
使用简单的文字,并在lien不包含skydrive和youtube时激活, 或者在lien不包含skydrive或youtube时激活,这意味着它将一直激活

你只是因为“!”而感到困惑:p

你使用的是“!”,这意味着如果某个东西不等于另一个东西

你说的是这句话,对吗

else if (!lien.contains("skydrive") && !lien.contains("youtube") )
使用简单的文字,并在lien不包含skydrive和youtube时激活, 或者在lien不包含skydrive或youtube时激活,这意味着它将一直激活

你只是因为“!”而感到困惑:p

你使用的是“!”,这意味着如果某个东西不等于另一个东西

你说的是这句话,对吗

else if (!lien.contains("skydrive") && !lien.contains("youtube") )
使用简单的文字,并在lien不包含skydrive和youtube时激活, 或者在lien不包含skydrive或youtube时激活,这意味着它将一直激活


你只是因为“!”而感到困惑:p

看看你的状况:

!lien.contains("skydrive") || !lien.contains("youtube")
如果
lien
不包含
skydrive
,会发生什么情况?
整个条件的计算结果为

true || whatever
无论
lien
是否包含
youtube
(表示
任何内容
),都将计算为true

youtube的情况也是如此。如果
留置权
不包含
youtube
,则必须将条件评估为
,因为它将是
无论什么| |真


如果你想写条件,会说

if it is not true that line contains `skydrive` or line contains `youtube`  
   ^^^^^^^^^^^^^^   (   ^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^  )
if(       !         (          a                 |            b             ) )
你需要把它写成

if (      !         ( line.contains("skydrive") || line.contains("youtube") ) )
或者使用
!(a | b)
!a&&!b
like

if (                 !line.contains("skydrive") && !line.contains("youtube")   )

这里你几乎没有证据证明德摩根定律,
1=true
0=false

a | b | !a | !b | a|b | !(a|b) | !a & !b
--+---+----+----+-----+--------+---------
0 | 0 | 1  | 1  |  0  |   1    |    1
0 | 1 | 1  | 0  |  1  |   0    |    0
1 | 0 | 0  | 1  |  1  |   0    |    0
1 | 1 | 0  | 0  |  1  |   0    |    0

这表明
a
b
的每种情况的结果对于
是相同的!(a | b)
!a&!b

看看你的情况:

!lien.contains("skydrive") || !lien.contains("youtube")
如果
lien
不包含
skydrive
,会发生什么情况?
整个条件的计算结果为

true || whatever
无论
lien
是否包含
youtube
(表示
任何内容
),都将计算为true

youtube的情况也是如此。如果
留置权
不包含
youtube
,则必须将条件评估为
,因为它将是
无论什么| |真


如果你想写条件,会说

if it is not true that line contains `skydrive` or line contains `youtube`  
   ^^^^^^^^^^^^^^   (   ^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^  )
if(       !         (          a                 |            b             ) )
你需要把它写成

if (      !         ( line.contains("skydrive") || line.contains("youtube") ) )
或者使用
!(a | b)
!a&&!b
like

if (                 !line.contains("skydrive") && !line.contains("youtube")   )

这里你几乎没有证据证明德摩根定律,
1=true
0=false

a | b | !a | !b | a|b | !(a|b) | !a & !b
--+---+----+----+-----+--------+---------
0 | 0 | 1  | 1  |  0  |   1    |    1
0 | 1 | 1  | 0  |  1  |   0    |    0
1 | 0 | 0  | 1  |  1  |   0    |    0
1 | 1 | 0  | 0  |  1  |   0    |    0

这表明
a
b
的每种情况的结果对于
是相同的!(a | b)
!a&!b

看看你的情况:

!lien.contains("skydrive") || !lien.contains("youtube")
如果
lien
不包含
skydrive
,会发生什么情况?
整个条件的计算结果为

true || whatever
无论
lien
是否包含
youtube
(表示
任何内容
),都将计算为true

youtube的情况也是如此。如果
留置权
不包含
youtube
,则必须将条件评估为
,因为它将是
无论什么| |真


如果你想写条件,会说

if it is not true that line contains `skydrive` or line contains `youtube`  
   ^^^^^^^^^^^^^^   (   ^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^  )
if(       !         (          a                 |            b             ) )
你需要把它写成

if (      !         ( line.contains("skydrive") || line.contains("youtube") ) )
或者使用
!(a | b)
!a&&!b
like

if (                 !line.contains("skydrive") && !line.contains("youtube")   )

这里你几乎没有证据证明德摩根定律,
1=true
0=false

a | b | !a | !b | a|b | !(a|b) | !a & !b
--+---+----+----+-----+--------+---------
0 | 0 | 1  | 1  |  0  |   1    |    1
0 | 1 | 1  | 0  |  1  |   0    |    0
1 | 0 | 0  | 1  |  1  |   0    |    0
1 | 1 | 0  | 0  |  1  |   0    |    0

这表明
a
b
的每种情况的结果对于
是相同的!(a | b)
!a&!b

看看你的情况:

!lien.contains("skydrive") || !lien.contains("youtube")
如果
lien
不包含
skydrive
,会发生什么情况?
整个条件的计算结果为

true || whatever
无论
lien
是否包含
youtube
(表示
任何内容
),都将计算为true

youtube的情况也是如此。如果
留置权
不包含
youtube
,则必须将条件评估为
,因为它将是
无论什么| |真


如果你想写条件,会说

if it is not true that line contains `skydrive` or line contains `youtube`  
   ^^^^^^^^^^^^^^   (   ^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^^^  )
if(       !         (          a                 |            b             ) )
你需要把它写成

if (      !         ( line.contains("skydrive") || line.contains("youtube") ) )
或者使用
!(a | b)
!a&&!b
like

if (                 !line.contains("skydrive") && !line.contains("youtube")   )

这里你几乎没有证据证明德摩根定律,
1=true
0=false

a | b | !a | !b | a|b | !(a|b) | !a & !b
--+---+----+----+-----+--------+---------
0 | 0 | 1  | 1  |  0  |   1    |    1
0 | 1 | 1  | 0  |  1  |   0    |    0
1 | 0 | 0  | 1  |  1  |   0    |    0
1 | 1 | 0  | 0  |  1  |   0    |    0


这表明
a
b
的每种情况的结果对于
是相同的!(a | b)
!a&!b

那么什么不起作用呢?我想你看错了。你的第一个解决方案是正确的,现在是错误的。现在你需要
lien
同时包含“skydrive”和“youtube”。当我在这里使用逻辑OR时:
否则如果(!lien.contains(“skydrive”)| |!lien.contains(“youtube”)
它不起作用,我会收到“linkInvalid”,但如果我使用逻辑OR,它会起作用,那么你问我们什么?你必须研究布尔逻辑。那么什么不起作用呢?我想你在读我