使用字节数组作为构造函数的参数:由于找不到参数而导致编译器错误

时间:2017-06-05 13:55:00

标签: java arrays constructor

我对构造函数和参数有一个特定的问题。

我使用byte []数组作为对象构造函数的参数。我的对象类编译得很好,但测试类有一个我无法弄清楚的错误。 我在测试类中使用了正确的参数,但是编译器说构造函数中没有任何参数。可以理解的是,我没有看到这个漏洞,但我对这个漏洞非常沮丧。

提前谢谢!

编译器错误:

CubeTest.java:6: error: constructor Cube in class Cube cannot be applied to given types;
    Cube test = new Cube();
                ^
required: byte[],byte[],byte[],byte[],byte[],byte[]
found: no arguments
reason: actual and formal argument lists differ in length
1 error

Cube类:

class Cube{
//declare arrays
private byte[] f;
private byte[] r;
private byte[] u;
private byte[] b; 
private byte[] l; 
private byte[] d; 
//
//
//
//constructor
public Cube(byte[] f, byte[] r, byte[] u, byte[] b, byte[] l, byte[] d){


    this.f = new byte[9];
    this.r = new byte[9];
    this.u = new byte[9];
    this.b = new byte[9];
    this.l = new byte[9];
    this.d = new byte[9];


    //fill this.f 
    for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
        this.f[i] = f[n];
    }
    //fill this.r 
    for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
        this.r[i] = r[n];
    }
    //fill this.u 
    for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
        this.u[i] = u[n];
    }
    //fill this.b 
    for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
        this.b[i] = b[n];
    }
    //fill this.l 
    for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
        this.l[i] = l[n];
    }
    //fill this.d 
    for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
        this.d[i] = d[n];
    }
}
}

测试类:

class CubeTest{
public static void main(String args[]){
    //f, r, u, b, l, d
    //1, 2, 3, 4, 5, 6
    //create such arrays
    byte[] f = new byte[9];
    byte[] r = new byte[9];
    byte[] u = new byte[9];
    byte[] b = new byte[9];
    byte[] l = new byte[9];
    byte[] d = new byte[9];
    //fill arrays
    for(int i = 0; i < 9; i++){
        f[i] = 1;
        r[i] = 2;   
        u[i] = 3;
        b[i] = 4;
        l[i] = 5;
        d[i] = 6;
    }
    //create Cube named test
    Cube test = new Cube(f, r, u, b, l, d);
    //
}
}

1 个答案:

答案 0 :(得分:0)

您必须在类Cube中提供默认构造函数。 声明自定义构造函数时,Java编译器不会创建默认构造函数。