Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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 ArrayList在每次迭代中清除自身_Java_Inheritance_Arraylist - Fatal编程技术网

Java ArrayList在每次迭代中清除自身

Java ArrayList在每次迭代中清除自身,java,inheritance,arraylist,Java,Inheritance,Arraylist,我一直在通过和抽象类练习继承,但是我在使用构造函数和ArrayList时遇到了一些麻烦 每次我查阅添加到Arraylist的所有信息时,它们似乎只打印最后添加的元素,这就是我目前得到的 public static void main(String[] args) throws IOException { do{ switch(menu){ case 1: int x=//random generated number; String name=//insert name; reception

我一直在通过和抽象类练习继承,但是我在使用构造函数和ArrayList时遇到了一些麻烦

每次我查阅添加到Arraylist的所有信息时,它们似乎只打印最后添加的元素,这就是我目前得到的

public static void main(String[] args) throws IOException  {
do{
switch(menu){
case 1:
int x=//random generated number;
String name=//insert name;
reception add=new Reception(x,name);continue;


Public class reception extends Hotel{
public Reception(int number,String name,){
super(number,name);
}

import java.util.ArrayList;

public abstract class Hotel {
    ArrayList<Integer> numerodehotel = new ArrayList<Integer>();
    ArrayList<String> residente1 = new ArrayList<String>();


    public Hotel(int number, String resident){
    this.resident1.add(resident);
    this.hotelroomnumber.add(number);
    }
每次我尝试打印所有元素时,它们似乎只显示两个ArrayList中最后添加的元素,几乎就像在每次迭代中重置自己一样


在main类中有一个带do的开关,我的想法是它应该添加所有的输入元素,而无需重新压缩,并且能够参考所有的输入元素

在每个循环迭代中创建一个新的接收对象。尝试将此定义放在循环之前,并在循环中使用此对象。此外,还需要为值编写一个空构造函数和getter/setter:

reception add=new Reception();
do {
    ...
    add.setNumerodehotel(x);
    add.setResidente1(name);
} while (...)

public abstract class Hotel {
    ArrayList<Integer> numerodehotel = new ArrayList<Integer>();
    ArrayList<String> residente1 = new ArrayList<String>();

    public Hotel(){
    }

    public void setNumerodehotel(int number){
       this.hotelroomnumber.add(number);
    }

    public void setResidente1(String resident){
       this.resident1.add(resident);
    }
}

该漏洞位于Hotel类的构造函数中。您正在构建Hotel类时定义ArrayList

这类似于这样做

public abstract class Hotel {
    ArrayList<Integer> numerodehotel;
    ArrayList<String> residente1;

    public Hotel(int number, String resident){
        numerodehotel = new ArrayList<Integer>();
        residente1 = new ArrayList<String>();
        this.resident1.add(resident);
        this.hotelroomnumber.add(number);

    }
}
如您所见,每次创建接待处或新酒店时,都会创建一个新的ArrayList,然后ArrayList中只会存在一个项目


您可能只想从构造函数中删除adding,然后通过一个单独的方法进行add。

请您至少发布一些编译过的代码好吗?放continue而不是break是正常的吗;在交换机里?继续创建一个whiletrue循环,之后没有任何应用程序是正常的。请格式化这个难以辨认的混乱。
public abstract class Hotel {
    ArrayList<Integer> numerodehotel;
    ArrayList<String> residente1;

    public Hotel(int number, String resident){
        numerodehotel = new ArrayList<Integer>();
        residente1 = new ArrayList<String>();
        this.resident1.add(resident);
        this.hotelroomnumber.add(number);

    }
}