2012-03-28 124 views
3

我在找Java的PHP等價物isset();如何檢查數組元素是否存在?

int board[][]=new int[8][8]; 
... 
if(isset(board[y][x])) 
    // Do something with board[y][x] 

這樣的函數是否存在於Java中?

編輯:對不起,我的意思是我想檢查board[100][100]是否存在與否。 if(board[100][100])會導致數組超出界限的錯誤。

+0

'isset()'的功能是什麼? – 2012-03-28 00:29:56

回答

6

在Java中,int陣列初始化爲零值,所以你不能說,如果它已經沒有設置,或者如果它被設置爲0

如果值你想檢查它是否設置,你應該使用Integer的數組。如果該值未設置,則將爲null

Integer[][] board = new Integer[8][8]; 
... 
if (board[x][y] != null) { ... } 
0

您可以創建一個方法,首先檢查x,y是否位於數組的邊界內,如果是,則該值不爲null。我不相信有一個內置的數組方法,但是有一些類似.contains()的輔助函數用於ArrayLists。

1

我認爲一個基本的空檢查會起作用。

String[] myArray = {"Item1", "Item2"}; 

for(int x =0; x < myArray.length; x++){ 
    if(myArray[0] != null) 
    { 
     ...do something 
    } 
} 
+0

它應該是if(myArray [x]!= null) – 2017-10-31 11:45:41

0

也許最好不要使用int,你可以使用整數,如果你真的把它作爲一個int,但一般來講一個複雜的對象將是更好的(如ChessPiece或東西)。這樣你可以檢查值== == null(null表示它沒有被設置)。

-1
if (board[x][y] != null) { 
    // it's not null, but that doesn't mean it's "set" either. You may want to do further checking to ensure the object or primitive data here is valid 
    } 

Java沒有equiv。因爲知道某件事情是否真正設定不僅僅是將一個值填入某個位置。

+1

確認...不要發現異常! – TofuBeer 2012-03-28 00:42:37

+0

只是想知道...爲什麼?我都是爲了減少異常處理和編碼 – 2012-03-28 14:26:42

+0

http://books.google.ca/books/about/Effective_Java.html?id=ka2VUBqHiWkC&redir_esc=y(第9章,第57項)。僅在特殊情況下使用例外。沒有什麼特別的事情要走出界限。此外,異常處理通常是代碼中較慢的路徑(未由虛擬機優化),因此它可能是不必要的性能問題。最後,它是一個RuntimeException,它表示程序員的錯誤 - 修復這個錯誤並不能解決它。爲x/y在範圍內添加if檢查,它更快,更清晰,且不易出錯。 – TofuBeer 2012-03-28 16:11:31