我非常需要帮助。我有一个名为Fields的类,我希望创建一个Field对象数组,但是当我执行下面的代码时:
static Field[] theField;
static Scanner userInput = new Scanner(System.in);
static void createFields()
{
System.out.print("Enter the number of fields required: ");
int numFields = userInput.nextInt();
theField = new Field[numFields];
for (int i = 0; i < numFields; i++)
{
System.out.print("Enter a name for field " + (i + 1) + ": ");
String name = userInput.nextLine();
theField[i].setFieldName(name);
}
}
然后我在控制台中收到以下输出和错误:
Enter the number of fields required: 3
Enter a name for field 1: Exception in thread "main" java.lang.NullPointerException
at TestChart.createFields(TestChart.java:44)
at TestChart.main(TestChart.java:14)
请大家帮忙解决错误。自昨晚以来我一直在努力无济于事。
答案 0 :(得分:0)
theField = new Field[numFields]
只是创建数组但是数组为空,因此theField[i].setFieldName(name);
将生成空指针异常。您需要使用Field
个对象填充数组。
答案 1 :(得分:0)
您已创建了字段数组(theField = new Field[numFields];
),但尚未创建个人Fields
。假设您有3个项目,那么您的数组如下:theField = { null, null, null }
导致NullPointerException。
所以,加上这个:
if(theField[i] == null)
{
theField[i] = new Field();
}
在你的for循环中的这一行之前:
theField[i].setFieldName(name);
答案 2 :(得分:0)
因此,虽然您有一个Fields数组,但没有一个Field对象被实例化。放行
Field[i] = new Field();
之前打电话
Field[i].setFieldName();