如果变量中没有任何内容,我希望写入一个变量。这是我的代码。
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[] x = new int[5];
exactly的含义是:完全一致,没有任何区别。
int[] x = new int[5];
x[3] = 0;
Integer[]
,您可以使用空值表示“未填充”...这是您想要的吗?Integer
),默认值为null
。inv
是一个 int[]
。你不能将 null
与 int
进行比较,null
只适用于引用类型,不适用于基本类型。你必须为其赋予某种标志值(例如,0
是常见的标志值,也是创建数组时默认的值),或者将 inv
改为 Integer[]
(Integer
是引用类型,可以为 null
)。inv[]
是一个int
类型的数组,在Java中int
不是对象,因此它不能有null
值。你需要将其与空的int
数组上每个索引的默认值0
进行比较。Integer[] inv = new Integer[10];
inv[0] = 1;
inv[1] = 2;
....
if(inv[3] == null)
{
inv[3] = getSomeValue();
}
inv
是一个int
数组,而不是对象包装器Integer
。你的数组已经为你初始化了。如果你写了:int[] inv = new int[5];
你将拥有一个由5个零组成的数组。
你应该自己初始化数组,使用一些你知道是无效的值(例如,如果你有一个年龄数组,负值就是无效的)。检查是否存在无效值,如果存在,则替换它。
嗯...int
是一个原始类型。它不能为null。
你可以检查数组的大小:
int[] arr = new int[10]; System.out.println( arr.length );
普通数组的索引从0到它们的大小-1,并且没有值可以丢失。
因此,在您的代码中,您正在询问第一个类型为int
的成员是否为null
,这是不可能发生的--它要么是一个数字,要么会导致ArrayOutOfBoundsException
。
如果你想要一个类似PHP或JavaScript的“稀疏数组”,你需要一个Map
:
Map<Integer, Integer> map = new HashMap();
map.put( 1, 324 );
if( map.get( 2 ) == null ) ...
原始类型不能与null进行比较。
您可以测试数字是否> 0以查看值是否存在:
if(inv[0] <= 0)
{
inv[0]=map.getTileId(tileX-1, tileY-1, 0);
}
inv[]
看起来像是一个int
数组,而int
类型作为原始类型,不能为 null。 - Bala R