2012-03-28 147 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