public class Practica2 {
public static void main(String[] args) {
Vector v = new Vector(3); //create an empty Vector vec with an initial capacity of 3
v.setpos(0,1); //set 0 at 1 index position
v.setpos(1,2); //set 1 at 2 index position
v.setpos(3,3); //set 3 at 3 index position
v.print();
这是我的班级Vector:
package practica2;
public class Vector {
//Atributes
private double[] values;
private int dim;
//Methods
public Vector(int dim) {
this.dim = dim;
}
public void setpos(int i, int value) {
values[i] = value;
}
public void print() {
for (int i = 0; i <= dim; i++) {
System.out.println(values);
}
我收到此错误,我不知道如何修复它,我只浪费了2个小时,我是Java新手。
运行: 线程“main”java.lang.NullPointerException中的异常 at practica2.Vector.setpos(Vector.java:24) at practica2.Practica2.main(Practica2.java:23) Java结果:1 建立成功(总时间:0秒)
答案 0 :(得分:0)
当您尝试在不首先初始化对象的情况下尝试使用对象时,会出现空指针异常。您永远不会初始化values
数组。将它添加到您的构造函数中(我假设您希望它是长度暗淡的:
values = new double[dim];
这将修复一个错误,并可能为您提供一个超出范围的数组索引错误。在java中,数组是0索引的。也就是说,如果你有一个长度为3的数组,那个数组的有效indeces是0,1和2. NOT 3.你应该改变
v.setpos(3,3);
到
v.setpos(2,3);
你也在调用使用Array的toString()方法打印的println(values)
(基本上,它是垃圾)。您需要将print语句更改为System.out.println(values[i])
现在你的程序应该正常运行。
作为旁注,您不必保存dim
的值。您可以改为使用values.length
。 (例如,在您的打印方法中)。