Java布尔方法返回

时间:2015-05-11 20:41:08

标签: java netbeans boolean

我的Java程序中有一个布尔方法,我想知道为什么NetBeans建议对我的代码进行此更改:

return isPrime != 0;

我写的是:

if (isPrime == 0) {
            return false;

        }
        else{
            return true;
        }

两者都正常工作,但我无法理解NetBeans建议的变更背后的逻辑。无论是真还是假都没有归还。有人可以向我解释这背后的逻辑吗?感谢

6 个答案:

答案 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的结果booleantruefalse

  

有人可以向我解释这背后的逻辑吗?

第一个代码相当于第二个代码。如果isPrime0,则返回false,否则返回true。如果!=false,则isPrime运算符将生成0,如果true0,则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会对这种方法提出什么建议,但我想它会提出与上面相同的建议。