Java数组索引问题
cantmano是索引,它从0开始。另一种方法随铁路超高++增加。Java数组索引问题,java,arrays,nullpointerexception,Java,Arrays,Nullpointerexception,cantmano是索引,它从0开始。另一种方法随铁路超高++增加。 我再次检查0您的manojugador数组空元素,并且您的cantmano以某种方式指向其中一个空元素 例如,假设您有: ManoJugador [] cantmano = new ManoJugador[10]; cantmano[0] = new ManoJugador(); cantmano[1] = new ManoJugador(); cantmano[2] = new ManoJugador(); 如果数组超出索
我再次检查0您的
manojugador
数组空元素,并且您的cantmano
以某种方式指向其中一个空元素
例如,假设您有:
ManoJugador [] cantmano = new ManoJugador[10];
cantmano[0] = new ManoJugador();
cantmano[1] = new ManoJugador();
cantmano[2] = new ManoJugador();
如果数组超出索引3,则有空值。这就是为什么当您尝试获取null的数字时,会得到NullPointerException
编辑
根据您的编辑:
是的,你肯定有一个空值。调试该部分,您将看到一些空值
提示:System.out.println(java.util.Arrays.toString(someArray))代码>
苏尔特 您的manojugador
数组空元素,而您的cantmano
不知何故指向其中一个空元素
例如,假设您有:
ManoJugador [] cantmano = new ManoJugador[10];
cantmano[0] = new ManoJugador();
cantmano[1] = new ManoJugador();
cantmano[2] = new ManoJugador();
如果数组超出索引3,则有空值。这就是为什么当您尝试获取null的数字时,会得到NullPointerException
编辑
根据您的编辑:
是的,你肯定有一个空值。调试该部分,您将看到一些空值
提示:System.out.println(java.util.Arrays.toString(someArray))代码>
苏尔特 必须初始化数组及其元素。如果你只是有这个:
Carta manojugador[]= new Carta[10];
然后数组的所有10个元素都将null
。您还必须初始化每个元素。大概是这样的:
for(int i=0, length=manojugador.length; i<length; i++) {
manojugador[i] = new Carta();
}
这不应该是:
if (cantmano < 10) {
if(cantmano<10){
或者更好:
if (cantmano < manojugador.length) {
if(cantmano
我认为在您的代码中发生的导致NullPointerException
的原因是manojugador[9]
永远无法初始化。您必须初始化数组及其元素。如果您有以下情况:
Carta manojugador[]= new Carta[10];
然后数组的所有10个元素都将null
。您还必须初始化每个元素。如下所示:
for(int i=0, length=manojugador.length; i<length; i++) {
manojugador[i] = new Carta();
}
这不应该是:
if (cantmano < 10) {
if(cantmano<10){
或者更好:
if (cantmano < manojugador.length) {
if(cantmano
我认为你的代码中发生的导致NullPointerException
的原因是manojugador[9]
永远无法初始化。你能在问题行之前打印(manojugador[cantmano])的值吗?Que dice la linea 58 de blackjack.java?com.pruebas.blackjack.blackjack.dibujar(blackjack.java:58)
请发布初始化manojugador
数组的代码。我怀疑它没有被完全初始化。getNumero()做什么?它返回什么?@OscarRyz:OP已经指出NullPointerException
与一起抛出的是哪一行。//你能打印(manojugador[cantmano]的值吗在问题行之前?Que dice la linea 58 de blackjack.java?com.pruebas.blackjack.blackjack.dibujar(blackjack.java:58)
请发布初始化manojugador
数组的代码。我怀疑它没有被完全初始化。getNumero()是什么意思do?它返回什么?@OscarRyz:OP已经指示了NullPointerException
与//一起抛出的行,所以我必须通过cantmano[i]循环吗调用构造函数?否,您必须使用有效值填充数组,或者将数组修剪到正确的大小。我还建议您使用列表来代替。其他(错误)选项是检查元素是否为空,但这只是隐藏底层问题的一种方法。在原始代码中发布。看起来你留下了空槽。可能是最后一个。@alfa64 Definitivamente tienes algunos nulls en tu arreglo,revisa esa sección de tu código.Saludos。那么我必须通过cantmano[i]循环吗调用构造函数?否,您必须使用有效值填充数组,或者将数组修剪到正确的大小。我还建议您使用列表来代替。其他(错误)选项是检查元素是否为空,但这只是隐藏底层问题的一种方法。在原始代码中发布。似乎您留下了空槽。可能是最后一个。@alfa64 Definitivamente tienes algunos nulls en tu arreglo,revisa esa sección de tu código.Saludos.+1仅用于上面的对话。(我不打算无视你的回答)@OscarRyz:我也只是对你的答案投了高票。对话对我来说也很有趣。+1只是对上面的对话。(我不打算无视你的回答)@OscarRyz:我也只是对你的答案投了高票。对话对我来说也很有趣。