2015-09-26 36 views
2

語言: Java。如何將對象2的變量賦予與對象1中的變量相同的值?

目的: 從對象間給變量名[](等級:房間)相同的值,從對象guest1虛擬變量nameGuest(類:訪客)。

問題: 這不起作用

void printRooms(){ 
    for(int i = 0; i < rooms.length; i++){ 
    rooms[i].roomNr = ""+(i+1); 
    for(int j = 0; j < 2; j++){ 
    a = guest1.getName(); 
    rooms[i].name = a; 
    }//end for 
}//end for 
}//end void 

評論: 我已經試過房[I]。名稱= guest1.nameGuest。這沒有用。使方法getName返回nameGuest也沒有工作。使用加油站變量a來存儲該值也一樣。 我是新來的類間編碼,我目前正在嘗試閱讀更多關於如何在https://docs.oracle.com/javase/tutorial/java/javaOO/http://www.tutorialspoint.com/java/java_object_classes.htm上完成但它沒有解決。

問: 你如何給object2.variable值object1.variable 在這種情況下,酒店必須有一個方法printRooms,讓房間[I]一些與客人的姓名(或名稱)( S)。

這裏是我的全碼:

public class Hotel2 { 
    Guest[] guest; 
    Room[] rooms; 
    String a; 

    void execute() { 
     rooms = new Room[10]; 
     Guest guest1 = new Guest("Alain"); 
     Guest guest2 = new Guest("Jantje"); 

     for (int i = 0; i < 9; i++) { 
      rooms[i] = new Room(guest1); 
     } 

     //2 guests in 1 room 
     rooms[9] = new Room(new Guest[]{guest1, guest2}); 
     System.out.println(Arrays.toString(rooms)); 

     printRooms(); 

    } 

    void printRooms() { 
     for (int i = 0; i < rooms.length; i++) { 
      rooms[i].roomNr = "" + (i + 1); 
      for (int j = 0; j < 2; j++) { 
       a = guest1.getName(); 
       rooms[i].name = a; 
      }//end for 
     }//end for 
    }//end void 

    public static void main(String[] args) { 
     (new Hotel2()).execute(); 
    } 
} 

class Room { 
    Guest[] guests; 
    String roomNr; 
    String name; 

    //1 guest constructor 
    Room(Guest g) { 
     guests = new Guest[1]; 
     guests[0] = g; 
    } 

    //several guests constructor 
    Room(Guest[] g) { 
     guests = g; 
    } 

} 

class Guest { 
    String nameGuest; 

    Guest(String n) { 
     nameGuest = n; 
     System.out.println(nameGuest); 
    } 

    String getName() { 
     return nameGuest; 
    } 
} 
+0

出了什麼問題?如果數據和類型正確,則沒有原因,您不能將一個變量指定爲另一個變量的值。 –

+0

縮進的注意事項。我直接複製了代碼(來自Dr. Java),並且必須添加空格,以便Stackoverflow能夠將其作爲代碼進行檢測。 至於什麼不順心: 1個發現錯誤: 文件:C:\用戶\ s150951 \ TUE科學網JAAR 1 \編程(E)\ Hotel2.java [行:31] 錯誤:guest1虛擬無法解決 這是它一直告訴我的。但我無法弄清楚guest1有什麼問題。無論我嘗試使用什麼部分來獲取nameGuest的價值「無法解決」 –

+0

您的「guest1」變量確實存在問題。它在你的「execute()」方法中被本地聲明,然後你試圖在「printRooms()」上使用它。您應該在您的課堂中聲明「guest1」(也可能是guest2)作爲屬性,就像您使用「guest」和「rooms」數組一樣。 –

回答

0

這真的很難理解你的要求。

你的問題似乎是與此代碼:

void printRooms() { 
    for (int i = 0; i < rooms.length; i++) { 
     rooms[i].roomNr = "" + (i + 1); 
     for (int j = 0; j < 2; j++) { 
      a = guest1.getName(); 
      // ^^^^^^ Compiler error: cannot resolve symbol "guest1" 
      rooms[i].name = a; 
     } 
    } 
} 

通知評論^^^^^我擺在那裏。 代碼未編譯, ,因爲變量guest1未定義。 它沒有在方法內定義, ,它沒有被定義爲類的字段。

如果你的目的是使用第一個客人的名字,以覆蓋每個房間的名字,這將是它:

void printRooms() { 
    for (int i = 0; i < rooms.length; i++) { 
     rooms[i].roomNr = "" + (i + 1); 
     rooms[i].name = room.guests[0].getName(); 
    } 
} 

但是,這沒有什麼意義了一個名爲printRooms方法, 它打印什麼。

但我希望基於此,你會弄清楚如何去做你真正想做的事情。

+0

這似乎是爲了完成這項工作。謝謝,我想我可以找到舊代碼中的缺陷並繼續。 我同意printRooms是該方法的一個奇怪的名稱,但它不是我的電話。我希望被指示稍後打印一些內容。 如果我的問題不清楚的話。我打算儘可能清楚地說明問題,現在我打算下次再努力。我懷疑我的解釋受到我的經驗不足的困擾,但我一整天都在努力解決這個問題。 謝謝你的幫助。 –

相關問題