逻辑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,它会起作用,那么你问我们什么?你必须研究布尔逻辑。那么什么不起作用呢?我想你在读我