为什么我不能创建MyVector的实例?

时间:2011-11-30 22:38:49

标签: java constructor

鉴于以下代码,由于某种原因,它不会创建MyVector的实例。可能是什么问题?问题发生在Main:

MyVector vec = new MyVector();

但是,当我使用其他构造函数创建MyVector的实例时:

MyVector vec2 = new MyVector(arr);

编译并分配实例。

班级点数:

public class Dot {

    private double dotValue;

    public Dot(double dotValue)
    {
        this.dotValue = dotValue;
    }

    public double getDotValue()
    {
        return this.dotValue;
    }

    public void setDotValue(double newDotValue)
    {
        this.dotValue = newDotValue;
    }

    public String toString()
    {
        return "The Dot's value is :" + this.dotValue;
    }

}

类MyVector

public class MyVector {

    private Dot[] arrayDots;

    MyVector()
    {       
        int k = 2;
        this.arrayDots = new Dot[k];
    }

    public MyVector(int k)
    {
        this.arrayDots = new Dot[k];
        int i = 0;
        while (i < k)
            arrayDots[i].setDotValue(0);
    }

    public MyVector(double array[])
    {
        this.arrayDots = new Dot[array.length];
        int i = 0;
        while (i < array.length)
        {
            this.arrayDots[i] = new Dot(array[i]);
            i++;
        }
    }

}

和Main

public class Main {

    public static void main(String[] args) {


        int k = 10;
        double [] arr = {0,1,2,3,4,5};
        System.out.println("Enter you K");
        MyVector vec = new MyVector();  // that line compile ,but when debugging it crashes , why ? 
        MyVector vec2 = new MyVector(arr);


    }
}

此致 罗恩

2 个答案:

答案 0 :(得分:2)

您的默认构造函数不可见。在构造函数前添加public关键字。

答案 1 :(得分:2)

我将您的代码复制到我的Eclipse IDE中并得到了一个“org.eclipse.debug.core.DebugException:com.sun.jdi.ClassNotLoadedException:在检索数组的组件类型时未发生类型的加载。”单击arrayDots变量时出现异常。

你的代码还可以正常工作。调试器有问题,因为未加载Dot类。 另见:http://www.coderanch.com/t/433238/Testing/ClassNotLoadedException-Eclipse-debugger

您可以按照以下方式更改您的主菜(我知道这不是很漂亮)

public static void main(String[] args) {


    int k = 10;
    double [] arr = {0,1,2,3,4,5};
    System.out.println("Enter you K");
    new Dot(); // the classloader loads the Dot class
    MyVector vec = new MyVector();  // that line compile ,but when debugging it crashes , why ? 
    MyVector vec2 = new MyVector(arr);


}