我的Java程序中有一个布尔方法,我想知道为什么NetBeans建议对我的代码进行此更改:
return isPrime != 0;
我写的是:
if (isPrime == 0) {
return false;
}
else{
return true;
}
两者都正常工作,但我无法理解NetBeans建议的变更背后的逻辑。无论是真还是假都没有归还。有人可以向我解释这背后的逻辑吗?感谢
答案 0 :(得分:4)
NetBeans完全正确。表达式是一个布尔值。您可以通过进行更改并尝试来轻松证明它。
ajax
评估的价值是多少? (提示:它是0 != 0
)。那么false
呢? (提示:它是1 != 0
)。
这不是你的更详细的代码所说的吗?
答案 1 :(得分:2)
而不是
if (isPrime == 0) {
return false;
} else {
return true;
}
试
return (isPrime != 0);
同样的事情,我将向您展示重构路径。从
开始if (isPrime == 0) {
return false;
} else {
return true;
}
与
相同if (isPrime != 0) {
return true;
} else {
return false;
}
可以通过替换来减少,用“doIsPrime()'函数替换'isPrime!= 0'
private boolean doIsPrime() {
return isPrime != 0;
}
替换
if (doIsPrime()) {
// guaranteed to be the same as above!
return doIsPrime();
} else {
return doIsPrime();
}
可以减少两个块(作为重复代码)
if (doIsPrime()) {
}
return doIsPrime();
通过删除空块
周围的if语句进一步减少return doIsPrime();
现在撤消替换'doIsPrime()'回'isPrime!= 0'
return isPrime != 0;
没有必要真正进行替换;但是,我发现它更好地展示了if语句多余的原因。
答案 2 :(得分:1)
不会返回真或假。
假。正在返回isPrime != 0
的结果boolean
,true
或false
。
有人可以向我解释这背后的逻辑吗?
第一个代码相当于第二个代码。如果isPrime
为0
,则返回false
,否则返回true
。如果!=
为false
,则isPrime
运算符将生成0
,如果true
不0
,则jQuery('[class="image responsive"]').append('<div id="switch"><img src="/js/off2.png"></div>');
jQuery("#switch").css({
'position': 'absolute',
'left': '2%',
'top': '40%',
'z-index': '9'
});
jQuery('#switch img').click(function() {
//some code that doesn't run
})
将生成var options = {
toolbar: {
height: 44,
color: '#cdcdcd'
},
title: {
color: '#003264ff',
showPageTitle: true
},
closeButton: {
image: 'close',
imagePressed: 'close_pressed',
align: 'left',
event: 'closePressed'
},
backButton: {
image: 'back',
imagePressed: 'back_pressed',
align: 'left',
event: 'backPressed'
},
forwardButton: {
image: 'forward',
imagePressed: 'forward_pressed',
align: 'left',
event: 'forwardPressed'
},
closeButton: {
image: 'close',
imagePressed: 'close_pressed',
align: 'left',
event: 'closePressed'
},
menu: {
image: 'menu',
imagePressed: 'menu_pressed',
title: 'Select for quick menu',
cancel: 'Cancel',
align: 'right',
items: [
{
event: 'btn1Pressed',
label: 'Button1'
},
{
event: 'btn2Pressed',
label: 'Button2'
}
};
function openBrowser(url) {
cordova.ThemeableBrowser.open(host+url, '_blank', options)
.addEventListener("btn1Pressed", function(e) {
//alert("btn1Pressed");
cordova.ThemeableBrowser.open("http://www.google.com", "_blank", options);
})
.addEventListener("btn2Pressed", function(e) {
//alert("btn2Pressed");
cordova.ThemeableBrowser.open("http://www.yahoo.com", "_blank", options);
});
}
。
答案 3 :(得分:1)
这意味着它返回谓词Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Set cell = Range("A2:B100")
If Not Application.Intersect(cell, Range(Target.address)) Is Nothing Then
If Target.Column = 1 Then ' Value in first column changed
Range("B" & Target.Row).Value = 2 * Range("A" & Target.Row).Value
Exit Sub
ElseIf Target.Column = 2 Then ' value in second column changed
Range("A" & Target.Row).Value = 1 / 2 * Range("B" & Target.Row).Value
Exit Sub
End If
End If
End Sub
的结果
如果isPrime = 0,则谓词为false,因此返回false
如果isPrime!= 0,则谓词为真,因此返回true
答案 4 :(得分:0)
这只是为了减少代码。
表达式isPrime != 0
返回一个布尔值。如果isPrime == 0
则为false,如果为isPrime != 0
则为true。因此,您可以保存if语句和一些代码行。
答案 5 :(得分:0)
只是添加到已经说过的内容:
虽然您的解决方案和NetBeans建议的方法完全正确,但另一种方法也是:
if (isPrime == 0) {
return false;
}
return true;
我不知道NetBeans会对这种方法提出什么建议,但我想它会提出与上面相同的建议。