填充数组时出现java.lang.NullPointerException [重复]
Posted
技术标签:
【中文标题】填充数组时出现java.lang.NullPointerException [重复]【英文标题】:java.lang.NullPointerException when filling array [duplicate] 【发布时间】:2016-06-19 04:30:42 【问题描述】:目标:通过随机数和排序数创建大小为x
的数组。
Array.java
import java.util.Random;
/**
* Created by cazorla19 on 05.03.16.
*/
public class Array
int myArray[];
Random rand;
Array()
Array (int x)
Array myArray[];
myArray = new Array[x];
for (int i=0; i<x; i++)
myArray[i] = new Array();
int[] ArrayFill ()
for (int i=0; i<myArray.length; i++)
int j = rand.nextInt();
myArray[i] = j;
return myArray;
int[] ArraySort ()
System.out.println ("Here is the Bubble sort!");
for (int i=0; i<myArray.length; i++)
for (int j=0; j<myArray.length - i - 1; j++)
if (myArray[j] > myArray[j+1])
int temp = myArray[j];
myArray[j] = myArray [j+1];
myArray[j+1] = temp;
return myArray;
void ArrayPrint()
for (int i=0; i<myArray.length; i++)
System.out.print (myArray[i] + ", ");
ArrayDo.java
/**
* Created by cazorla19 on 05.03.16.
*/
public class ArrayDo extends Array
public static void main (String args[])
int x = 10;
Array labArray = new Array(x);
labArray.ArrayFill();
labArray.ArrayPrint();
labArray.ArraySort();
labArray.ArrayPrint();
某种例外。
Exception in thread "main" java.lang.NullPointerException
at Array.ArrayFill(Array.java:23)
at ArrayDo.main(ArrayDo.java:10)
这就是我尝试使用数组长度的地方。试图通过这个问题 [1] [2] 弄清楚。尽管我在数组构造函数中做了,但我认为我不能从 NULL 更改数组值。有没有人强迫过类似的问题?我知道这应该很容易,但仍然无法意识到问题所在。
【问题讨论】:
【参考方案1】:问题是构造函数Array(int x)
没有初始化类变量int myArray[]
。它只初始化在构造函数中定义的局部变量数组myArray[]
。
【讨论】:
【参考方案2】:初始化以下值,一切顺利!
int myArray[]=new int[10];
Random rand=new Random();
【讨论】:
哦,是的!实际上问题是随机的。我没有正确声明它,变量不是随机类实例,所以数组很好。非常感谢!【参考方案3】:你的构造函数没有意义。它初始化一个不同类型的本地数组,然后初始化具有相同名称的数组成员,这意味着该数组成员保持未初始化。
应该是:
Array (int x)
myArray = new int[x];
您不需要 Array
实例 (Array myArray[]
) 的数组。
【讨论】:
对。我事先做了,但 Java 解释器卡在空异常上。我认为这是空值数组的问题,但问题在于 Random 函数。谢谢。以上是关于填充数组时出现java.lang.NullPointerException [重复]的主要内容,如果未能解决你的问题,请参考以下文章
填充数组时出现java.lang.NullPointerException [重复]
Java - 初始化数组后和使用类方法测试数组时出现 NullPointerException