2017-02-14 71 views
0

我目前在做網上編碼學習編碼,我正在做戰艦問題。在這個問題中,你將得到方法和他們在代碼中接受的參數。CodeHS Battleship Java

我被困在用戶輸入行和列的問題上,代碼驗證是否輸入了行和列。

// Has the location been initialized 
public boolean isLocationSet() 
{ 
    if(row == null && col == null) 
    { 
     return false; 
    } 

    return true; 
} 

我得到的錯誤說:無與倫比的類型int和(它切斷,但我猜想這意味着零或布爾)

我怎麼能夠說,如果預期的整數rowcolumn爲空則返回false,否則返回true?

+0

什麼是'row'和'col'?這個錯誤意味着它們是'int'值,它可以*從不*爲'null'。所以比較是無效的,永遠不可能是「真實的」。 – David

+0

目前還不清楚你在問什麼。一種方法是使用初始化爲null的Integer對象,而不是不能爲空的int。 –

回答

0

int不能是null。也不能有很多其他的原始類型。相應地調整您的條件:

private int row = 0; 
private int col = 0; 

// Has the location been initialized 
public boolean isLocationSet() 
{ 
    if(row <= 0 || col <= 0) 
    { 
     return false; 
    } 

    return true; 
} 

我也會使用OR運算符而不是AND。推測你的rowcol變量初始化爲0。因此,例如,如果row=1但是col=0那麼這個isLocationSet()方法將返回false,這將是預期的,因爲其中一個位置變量rowcol尚未設置。

您可以使用Integer,而是如果你想檢查空:

private Integer row = null; 
private Integer col = null; 

// Has the location been initialized 
public boolean isLocationSet() 
{ 
    if(row == null || col == null) 
    { 
     return false; 
    } 

    return true; 
} 
0

衝突歸因於Java中的the difference between primitive types and reference types。 Java有一些內置類型(int,boolean,float,char等),它們永遠不可能是null並且永遠不能被繼承。它看起來像你試圖比較introw)和null。這是一個錯誤,因爲int永遠不可能是null

您可能需要使用Integer來代替,該參考類型可以自動轉換爲int