0

我是 java 新手,在尝试将单个元素添加到结构类型数组时遇到问题。我的数组设置如下:public apartment availableRoom[] = new apartment[1]; 我的 main 调用一个方法,该方法在应用程序启动后立即对其进行初始化:

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 Reference Variables – Objects – Anonymous objects中找到更多详细信息

于 2013-02-17T06:54:16.250 回答