2017-05-28 21 views
-6

私は抽象クラスを通して継承を練習していましたが、コンストラクタと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 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に最後に追加された要素を表示するように見えます。ほとんどの場合、すべての繰り返しでそれ自体がリセットされています。メインクラスで

私の考えは、それがressetingなく、すべての入力要素を追加し、あなたはすべてのサイクルの繰り返しで、新しい受信者オブジェクトを作成し、すべての

+1

少なくとも*コンパイルするコードを投稿してください。 – QBrute

+0

breakの代わりにcontinueを入れるのが普通です。スイッチで? while(true)ループを作成し続けると、それ以降のnothirg appnesは普通です –

+1

この読みにくい混乱をフォーマットしてください。 – EJP

答えて

0

に相談することができるはずだったとしながら、DOとスイッチがあります。サイクルの前にこの定義を入れて、サイクルでこのオブジェクトを使用してください。また、あなたは値のために空のコンストラクタとゲッター/セッターを書く必要があります:

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); 
    } 
} 
0

欠陥がHotelクラスのコンストラクタ内です。あなたは

public abstract class Hotel { 
    // Every time you create a new Hotel these two lines are executed 
    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); 
    } 
} 

これは、あなたが見ることができるよう、すべての時間はあなたがReception(新しいHotel)の作成、したがって、この

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); 

    } 
} 

を行うことに似てHotelクラスの建設でArrayListsを定義しています新しいArrayListが作成され、次に1つのアイテムのみがあなたの中に存在しますArrayLists

おそらく、コンストラクタから追加を削除し、別のメソッド。

関連する問題