Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建具有构造函数功能的对象数组_Java - Fatal编程技术网

Java 创建具有构造函数功能的对象数组

Java 创建具有构造函数功能的对象数组,java,Java,我有这门课 public class customer { int id; int status ; customer(int value) { id = value; status = 0; } } 我想创建一个由100个customer对象组成的数组。 如何将参数传递给customer类的constructor函数 public class barbershop { Queue WaitSeat ;

我有这门课

public class customer {

    int id;
    int status ;
    customer(int value)
    {

        id = value;
        status = 0;

    }
}
我想创建一个由100个customer对象组成的数组。 如何将参数传递给customer类的constructor函数

public class barbershop {
    Queue WaitSeat ;
    Queue WaitRoom ;
    static barber [] bb ;
    static customer [] cc;
    barbershop(){
        WaitSeat = new PriorityQueue(4);
        WaitRoom = new PriorityQueue(13);
        bb = new barber[3];
        cc = new customer [100]{1}; // problem !

    }

}
在循环中创建对象并将其放置在阵列中 您需要单独创建每个对象,然后将其放置在阵列中。这是两个独立的操作(尽管它们可以在同一行中)。一个循环将使这更令人愉快

cc = new customer[100];
for(int i=0;i<cc.length;i++){
    cc[i]=new customer(1);
}
cc=新客户[100];
对于(int i=0;i)在循环中创建对象并将其放置在数组中
您需要单独创建每个对象,然后将其放置在数组中。这是两个独立的操作(尽管它们可以在同一行中)。循环将使这一操作更加愉快

cc = new customer[100];
for(int i=0;i<cc.length;i++){
    cc[i]=new customer(1);
}
cc=新客户[100];
对于(int i=0;i
这将创建一个ref
cc
,保存
100个客户ref

for(int i=0;i>cc.length;i++){
    cc[i]=new customer(1);
}
这将创建一个ref
cc
,保存
100个客户ref

for(int i=0;i>cc.length;i++){
    cc[i]=new customer(1);
}
公共级理发店{
排队等候座位;
排队等候室;
静态理发器[]bb;
静态客户[]抄送;
理发店(){
WaitSeat=新的优先级队列(4);
等候室=新的优先队列(13);
bb=新理发师[3];
对于(i=0;i
公共级理发店{
排队等候座位;
排队等候室;
静态理发器[]bb;
静态客户[]抄送;
理发店(){
WaitSeat=新的优先级队列(4);
等候室=新的优先队列(13);
bb=新理发师[3];

对于(i=0;i首先,类应始终使用CamelCase编写。
其次,我认为这是不可能的。您可以使用如下的for循环:

cc = new Customer[100];
for(int i = 0; i < 100; i++) {
    cc[i] = new Customer(i);
}
cc=新客户[100];
对于(int i=0;i<100;i++){
cc[i]=新客户(i);
}

首先,类应始终使用CamelCase编写。
其次,我认为这是不可能的。您可以使用如下的for循环:

cc = new Customer[100];
for(int i = 0; i < 100; i++) {
    cc[i] = new Customer(i);
}
cc=新客户[100];
对于(int i=0;i<100;i++){
cc[i]=新客户(i);
}

数组
初始化与对象初始化混淆

cc
客户的
数组(注意,此处大写)

为了访问
Customer
的构造函数并获取实例,您需要用实例填充
数组

要简化您的问题,您可以执行以下操作:

  cc = new Customer[100];
  Arrays.fill(cc, new Customer(1));
这将使用100个元素填充100个大小的
数组
,这些元素引用
客户
的一个实例,其
id
将为
1

注意,该实例是跨100个元素共享的

反过来,如果修改一个元素,则“修改整个数组”,如下所示

独立示例

public class Main {

    public static void main(String[] args) {
        // initializing array
        Customer[] cc = new Customer[100];
        // filling array
        Arrays.fill(cc, new Customer(1));
        // printing array
        System.out.println(Arrays.toString(cc));
        // changing any array element
        cc[0].setId(2);
        // printing array again
        System.out.println(Arrays.toString(cc));
    }

    static class Customer {
        int id;
        int status;

        Customer(int value) {
            id = value;
            status = 0;
        }
        // invoking this method on any object of the array will update all references
        public void setId(int value) {
            id = value;
        }

        @Override
        public String toString() {
            return String.format("Customer %d", id);
        }
    }
}
输出

[Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, etc...]

[Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, etc...]

数组
初始化与对象初始化混淆

cc
客户的
数组(注意,此处大写)

为了访问
Customer
的构造函数并获取实例,您需要用实例填充
数组

要简化您的问题,您可以执行以下操作:

  cc = new Customer[100];
  Arrays.fill(cc, new Customer(1));
这将使用100个元素填充100个大小的
数组
,这些元素引用
客户
的一个实例,其
id
将为
1

注意,该实例是跨100个元素共享的

反过来,如果修改一个元素,则“修改整个数组”,如下所示

独立示例

public class Main {

    public static void main(String[] args) {
        // initializing array
        Customer[] cc = new Customer[100];
        // filling array
        Arrays.fill(cc, new Customer(1));
        // printing array
        System.out.println(Arrays.toString(cc));
        // changing any array element
        cc[0].setId(2);
        // printing array again
        System.out.println(Arrays.toString(cc));
    }

    static class Customer {
        int id;
        int status;

        Customer(int value) {
            id = value;
            status = 0;
        }
        // invoking this method on any object of the array will update all references
        public void setId(int value) {
            id = value;
        }

        @Override
        public String toString() {
            return String.format("Customer %d", id);
        }
    }
}
输出

[Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, etc...]

[Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, etc...]

这是一个有趣的替代方案。公平地说,这会用对同一对象的引用填充数组吗?这可能是OP想要的,但对可变对象来说可能是危险的objects@RichardTingle谢谢你的评论-我实际上意识到我的回答中的措辞非常模糊:不是100个例子,当然是100个引用1个实例。这是一个有趣的替代方案。可以公平地说,这会用对同一对象的引用填充数组。这可能是OP想要的,但对可变对象来说可能是危险的objects@RichardTingle谢谢你的评论-我实际上意识到我的回答中的措辞非常模糊:不是100英寸tances,但当然100次引用1个实例。我想说的是,当代码被修改时,以后容易出现错误。也添加了这个。谢谢。更好。最后一件事:您省略了
cc=new customer[100]
行,假设您坚持数组大小为100,那么您的循环应该是
行(i=0;iI会这么说;当代码被修改时,以后容易出现错误。也添加了这个。谢谢。好多了。最后一件事;您省略了
cc=new customer[100]
行,假设您坚持使用100的数组大小,那么您的循环应该是
for(i=0;i)