向量的吸气剂/ setter

时间:2013-11-08 13:59:16

标签: arrays vector

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秒)

1 个答案:

答案 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。 (例如,在您的打印方法中)。