2014-04-21 55 views
0

我写一个非常原始的二十一点游戏高中编程类和我玩写一个布尔这样:为布尔语句返回关键字

public boolean DealerTracker() 
{ 
    if(a==11 || a==12|| a==13) 
    { 
    a = 10; 
    } 
    dealerHandValue = a + dealerHandValue; 
    if(dealerHandValue>21) 
    { 
    DealerHand.setText("The House went bust!! Everybody wins!!"); 
    return true; 
    } 
    else if(dealerHandValue<21) 
    { 
    return null; 
    } 

    else if(dealerHandValue==21) 
    { 
    return false; 
    } 

} 

我不断收到一个错误,指出回报null(我无法设法使花哨的blockquote工作)是无效的。然而,为了这个布尔值工作,我真的需要三个返回语句。所以我的问题是这样的:有没有办法让零工作,或者是否有一些我可以放在其位置上仍然是可行的,或者我只是在这里愚蠢。

请注意,我并不真的需要这个布尔值,因此,如果你认为有没有解决办法,只是建议布尔的缺失。

+1

您不能返回null,因为您没有返回对象。只能使用“true”和“false”。除非你选择返回'Boolean',即包装一个布尔类型的类。 – AntonH

+0

http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx :) – yshavit

回答

0

boolean元不能null。基本上,你有两个选择,我可以看到:

有你的函数返回一个Boolean(注意是大写的“B”)。 Boolean是一个对象,而不是一个原始的,所以可以是null

更好的解决方案是定义一个枚举。这可以帮助您保留返回值的语义,这将使您的代码更易读,更易于维护。

2

基元布尔只能返回值truefalse。你需要返回的对象包装类型boolean

public Boolean dealerTracker() { 
... 
0

如果你并不真的需要布尔,使返回void类型,并删除所有return语句。如果您确实需要布尔AND NULL,请将返回类型更改为布尔值,该布尔值将返回包含在实际可为null的对象中的布尔值。调用此方法的方法可以接收true,false或null,因为null实际上也代表了某些内容(尽管我不确定在这种情况下它代表什么意义)。