0

私はJavaが初めてで、単一の要素を構造型配列に追加しようとすると問題が発生します。私は配列を次のようにセットアップしています:public apartment availableRoom[] = new apartment[1]; 私のメインは、アプリケーションが起動するとすぐにこれを初期化するメソッドを呼び出します:

availableRoom[0] = new apartment(150, 2, 200.00,null);
//this sets default values for room#, beds, price, and guest

私のコンストラクタはそのように情報を取ります

public apartment(int roomNum, int beds, double price, String guest )
    { 
        this.roomNumber = roomNum;
        this.roomBeds = beds;
        this.nightlyFee = price;
        this.roomGuest = guest;
    }

私が問題を抱えているのは、ゲストを部屋に割り当てようとしているときです。availableRoom[i].roomGuest = name ユーザーが名前を入力し、iが0に設定されている(チェックした)で試しています。エラーはありませんが、部屋の情報を印刷しようとすると、すべての値が 0 として返され、ゲストが null として返されます。誰かが私が間違っていることを見ることができますか? (ちなみにアパートメントはメインクラスとは別クラスです)

主要

public class apartmentMain {


    static apartment action = new apartment();



    public static void main(String[] args) {

        action.createApt();
        action.addGuest();

アパート.java

public void createApt()
    {
       availableRoom[0] = new apartment(150, 2, 200.00,null);
}

public void addGuest()
{

    name = input.next();
    availableRoom[i].roomGuest = name;

}
4

2 に答える 2

1

まあ、あなたが言うように

エラーはありませんが、部屋の情報を印刷しようとすると、すべての値が 0 として返され、ゲストが null として返されます。

異なるオブジェクトに値を設定し、異なるオブジェクトを印刷していると思います。値を印刷する方法を貼り付けるだけで、非常に役立つ場合があります。

考慮事項

  1. デフォルト値を取得しているため(何も割り当てない場合にインスタンス変数が取得する)、インスタンス化されているが初期化されていない実際のオブジェクトが配列内にあることを意味します。
  2. 印刷しているオブジェクトと値を設定しているオブジェクトをよく見てください。
  3. 最初のインデックスで、新しくインスタンス化されたオブジェクトが挿入され、元のオブジェクトが置き換えられる可能性は十分にあります。
  4. 元のものとは異なるオブジェクトを印刷しています....可能性があります。
  5. 問題を実際に見やすくするために、「引数なしのコンストラクター」を削除することをお勧めします。試してみてください..その価値があります。
于 2013-02-17T05:33:38.423 に答える
0

あなたのプログラムは完成していません。エラーを推測できる小さな例を示します。

public class Demo
{
   int x;
   public static void main(String args[])
   {
       Demo d[] = new Demo[2];
       d[0] = new Demo();
       d[1] = new Demo();

       d[0].x = 100;
       d[1].x = 200;

       System.out.println(d[0].x); 
       System.out.println(d[1].x); 
   }
}
Many people get wrong concept in the following code.
       Demo d[] = new Demo[2];

You think a Demo array of 2 elements (with two Demo objects) with object d is created.  
It is wrong.  Infact, two reference variables of type Demo are created.  The two    
reference variables are to be converted int objects before they are used as follows.
       d[0] = new Demo();
       d[1] = new Demo();

With the above code, d[0] and d[1] becomes objects.  Now check your code in these  
lines.  

詳細については、 Java 参照変数 – オブジェクト – 匿名オブジェクトを参照してください。

于 2013-02-17T06:54:16.250 に答える