[英]How can I check if a variable exists in Java?
我只想在没有任何东西的情况下写入变量。 到目前为止,这是我的代码。
if (inv[0] == null) {
inv[0]=map.getTileId(tileX-1, tileY-1, 0);
}
它给了我这个错误:
java.lang.Error: Unresolved compilation problem:
The operator == is undefined for the argument type(s) int, null
inv 是一个int[]
,而int
不能是null
,因为它是一个原语而不是参考。
int
在 java 中被初始化为零。
我假设inv
是一个int[]
。
没有值“存在”或不在数组中这样的概念。 例如:
int[] x = new int[5];
与以下内容完全相同:
int[] x = new int[5];
x[3] = 0;
现在,如果您使用Integer[]
,您可以使用 null 值来指示“未填充”...这是您想要的吗?
Arrays 总是用元素类型的默认值开始填充 - 在Integer
null
我认为inv
是一个int[]
。 您不能将int
与null
进行比较, null
仅适用于引用类型,而不适用于原语。 您必须为其分配某种标志值( 0
很流行,并且在创建数组时默认情况下它将具有的值),或者将inv
改为Integer[]
( Integer
是参考类型,它是null
-有能力的)。
我从错误消息中假设inv[]
是int
的数组,并且 java 中的int
不是 object,因此它不能具有null
与每个索引的默认0
进行比较。大批)..
Java 中的原语不能是 null。
嗯... int
是一个原始类型。 那不可能是 null。
您可以检查数组的大小:
int[] arr = 新的 int[10]; System.out.println(arr.size());
普通的 arrays 的索引从 0 到它们的大小 - 1,并且不能缺少任何值。 因此,在您的代码中,您要询问int
类型的第一个成员是否是null
,这不可能发生 - 它是一个数字,或者它会导致ArrayOutOfBoundsException
。
如果你想要一个类似于 PHP 或 JavaScript 的“稀疏数组”,你需要一个Map
:
Map<Integer, Integer> map = new HashMap();
map.put( 1, 324 );
if( map.get( 2 ) == null ) ...
你可以试试这样的
Integer[] inv = new Integer[10];
inv[0] = 1;
inv[1] = 2;
....
if(inv[3] == null)
{
inv[3] = getSomeValue();
}
该错误是因为inv
是一个数组int
,而不是 object 包装器Integer
。 无论如何,您的数组都会为您初始化。 如果你写
int[] inv = new int[5];
您将有一个包含 5 个零的数组。
您应该使用一些您知道无效的值自己初始化您的数组(例如,如果您有一个年龄数组,负值将是无效的)。 检查无效值,如果存在,请替换它。
原始类型无法与 null 进行比较。
您可以测试数字 if > 0 以查看值是否存在:
if(inv[0] <= 0)
{
inv[0]=map.getTileId(tileX-1, tileY-1, 0);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.