2013-11-27 32 views
1

我编码在Java中的一个项目,并创建了一个类用下面的代码:如何创建现有类的新实例?

public class VehInfo { 
    private int[][] traffic = new int[20][150]; 
    private int mintime = 0; 
    private int numvehicles = 1; 
    private int[] vehiclecode = new int[5]; 

    public VehInfo(int[][] traffic, int mintime, int numvehicles, int[] vehiclecode) { 
     this.traffic = traffic; 
     this.mintime = mintime; 
     this.numvehicles = numvehicles; 
     this.vehiclecode = vehiclecode; 
    } 
} 

我想用下面的代码

VehInfo vehinfo = new VehInfo(new int[20][150], new int, new int, new int[5]); 

创建这个类的一个新实例。然而, Netbeans的通知我:

必需的:(INT [] [],INT,INT,INT [])

发现:(int [] [],int [],int [],int [])

我在想什么?我显然不会将这些变量初始化为int [],那么为什么它们会被拾取?

+3

你认为那是新的INT'将完成? – Gimby

+0

新的int应该被int替换掉 – user1121883

+0

通过哪个int? “new int”的价值是什么? – Kayaman

回答

5

你不能启动简单的数据类型一样intbooleancharfloatdouble等 将其更改为类似的东西:

VehInfo vehinfo = new VehInfo(new int[20][150], 0, 0, new int[5]); 

或删除传入的属性。在我看来,你的默认设置是:

private int mintime = 0; 
private int numvehicles = 1; 
1

尝试

VehInfo vehinfo = new VehInfo(new int[20][150], 0,0 new int[5]); 

编辑:太晚了:(

+2

没有“太晚”的正确答案... :-) –

0

你的构造

public VehInfo(int[][] traffic, int mintime, int numvehicles, int[] vehiclecode) 

需要这样的情况下假设你已经声明变量:

int[][] traffic = new int[20][150]; 
int mintime = 0; 
int numvehicles = 0; 
int[] vehiclecode = new int[5]; 

然后,你可以给它们赋值:

/** here in your program you assign some values */ 
mintime = 30; 
numvehicles = 2; 
vehiclecode[0] = 44; 
vehiclecode[1] = 77; 

,后来创建

/** then in you program you can create vehinfo objects */ 
VehInfo vehinfo = new VehInfo(traffic, mintime, numvehicles, vehiclecode); 
1

您与语法错误挣扎VehInfo类的对象,

试试这个VehInfo vehinfo = new VehInfo(new int[20][150], 1, 2, new int[5]);

1

是这样的:

VehInfo vehinfo1 = new VehInfo(new int[20][150], new Integer(1), new Integer(1), new int[5]); 

或该:

VehInfo vehinfo2 = new VehInfo(new int[20][150], 1, 1, new int[5]); 

由于INT(或整数)是它们不能没有值被实例化的原语。

0

尝试使用数字而不是“new int”像这样初始化您的类。

VehInfo vehinfo = new VehInfo(new int[20][150], 0, 0, new int[5]); 
0

尝试: 你需要给实际值的参数初始化类型的对象VehInfo使用您已经创建了VehInfo构造器:

int[][] myint1 = new int[5][5]; //Allocating memory for 5x5 array 
myint1 = {{ 1, 2, 3, 4, 5}, 
      { 6, 7, 8, 9, 10}, 
      {11, 12, 13, 14, 15}, 
      {16, 17, 18, 19, 20}, 
      {21, 22, 23, 24, 25}}; 

VehInfo myVehInfo = new VehInfo(myint1, 5, 5, int[5]);