2013-02-17 64 views
0

我是新來的java和試圖將單個元素添加到結構類型數組時遇到問題。我有我的陣列設置爲這樣:public apartment availableRoom[] = new apartment[1];我的主要要求是,一旦應用程序啓動初始化這樣的方法:錯誤添加到結構數組中的單個元素java

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名稱由用戶輸入,我設置爲0(我選中)。沒有錯誤,但是當我打印房間的信息時,它將每個值都返回爲0,並將guest虛擬機返回null。任何人都可以看到我做錯了什麼? (FYI公寓是從主要一個單獨的類)

主要

public class apartmentMain { 


    static apartment action = new apartment(); 



    public static void main(String[] args) { 

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

apartment.java

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

public void addGuest() 
{ 

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

} 
+1

找到更多的細節可能需要粘貼整個代碼 – Ulises 2013-02-17 05:14:37

+0

不,我不認爲任何人都可以。這是因爲你限制了你發佈的內容。我們看不到循環,我們看不到變量的聲明,我們不知道如何檢查索引的值。鑑於你的問題是什麼,你應該能夠構建一個完整的,可執行的「主」類,在少於20行的內容中演示你遇到的問題。在創建過程中,你可能只是自己發現答案,如果沒有,你可以形成一個更好的問題。 – arcy 2013-02-17 05:15:28

+0

僞代碼將會很好 – user1428716 2013-02-17 05:16:09

回答

1

好了,就像你說的

沒有錯誤,但是當我去打印房間的信息,它將每個值返回爲0,並將客人返回爲null。

我想,你是在不同的對象設置值和打印不同的值。如果您只是粘貼如何打印其值,可能會有很大幫助。

需要考慮的事情

  1. 因爲你得到的默認值(即實例變量得到,如果你不指定任何),這意味着實際的對象是有你的陣中,被實例化,但未初始化。
  2. 仔細看看您正在打印哪個對象以及您正在設置哪個值。
  3. 很有可能在第一個索引處插入新實例化的對象,以某種方式替換原來的對象。
  4. 你正在打印一個不同的對象比原來的....一種可能性。
  5. 您可能想要擺脫「無參數構造函數」以更好地實際看到問題。試試吧..值得。
+0

在我嘗試添加客人之前,它的打印質量很好。第二我稱加客方法,並嘗試再次打印是什麼時候它返回所有0和空 – bardockyo 2013-02-17 05:41:25

+0

已嘗試刪除沒有參數構造..?也可以。你可能想要顯示代碼..當你再次打印它.. – Ahmad 2013-02-17 05:47:19

+0

我很抱歉,你可以解釋你的意思是沒有參數構造? – bardockyo 2013-02-17 05:50:29

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