2014-11-23 48 views
0

我有這樣的代碼已經寫:如何在ArrayList中打印對象的名稱?

import java.util.ArrayList; 
import java.util.List; 


public class TestBox { 

    public static void main(String[]args){ 

     ShoeBox nike = new ShoeBox(); 
     Box present = new CandyBox(3,2,6); 
     JewelryBox gift = new JewelryBox(); 
     Box pictures = new ShoeBox(); 
     Box skittles=new CandyBox(6,3,1); 
     CandyBox dots=new CandyBox(3,2,1); 
     Box jareds=new JewelryBox(); 
     List<Box> boxes=new ArrayList<Box>(); 
     boxes.add(nike); 
     boxes.add(present); 
     boxes.add(gift); 
     boxes.add(pictures); 
     boxes.add(skittles); 
     boxes.add(dots); 
     boxes.add(jareds); 

     double temp=0; 
     for (Box x:boxes) 
      temp=temp+x.getVolume(); 

     for (int i=0;i<boxes.size();i++) 
      System.out.println(boxes.get(i)); 

     double count=0; 
     for (int k=0;k<boxes.size();k++) 
      if ((boxes.get(0).getVolume())<(boxes.get(k).getVolume())) 
       count=boxes.get(k).getVolume(); 
     System.out.println("The box with the biggest volume is the "+boxes.get((int)count)+". The dimensions of the box" 
       + "are "+boxes.get((int)count).getLength()+" x "+boxes.get((int)count).getWidth()+" x " 
       +boxes.get((int)count).getHeight()+"."); 
    } 
} 

這是我的測試一個名爲Box類。子類被顯示在它們的創作中。打印對象名稱所需的代碼行是什麼?例如吃喝玩樂或jareds?

我需要打印體積最大的對象的「名稱」。假設對象「耐克」擁有最大的音量。主要底部的印刷說明應該說:「體積最大的盒子是耐克,尺寸是12×12×12」。

+1

帶*的對象的名稱*你的意思如何獲得該類的簡單名稱?如果是這樣,那麼使用'yourObject.getClass()。getSimpleName()'。 – 2014-11-23 02:17:14

+0

@LuiggiMendoza你能解釋一個簡單的名字是什麼嗎?對不起,這是我第一年的學習代碼。我正在尋找一種方法來打印ArrayList框中的對象的名稱。 – 2014-11-23 02:19:31

+2

好吧,一個對象沒有名字。一個班有一個名字。一個類有一個全名,它是它所屬的包的名稱和類的簡單名稱。例如,如果你的'TestBox'類在'edu.yourcollege.noah'包內,那麼它的全名是'edu.yourcollege.noah.TestBox',簡單的名字就是'TestBox'。 – 2014-11-23 02:22:31

回答

0

看起來您想要打印符合特定條件並存儲在您的收藏(您的List)中的變量的名稱。由於在運行時無法訪問變量的名稱,所以此在Java中不可行。在這種情況下,您應該在類中添加一個字段,以幫助您識別正在使用的對象實例。該字段可以是int idString name(爲了簡單起見)。

爲了方便起見,加在你Box類這一領域:

public class Box { 
    //fields already declared here... 
    //adding name field 
    protected String name; 
    public String getName() { 
     return this.name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

然後,在創建對象時完成這一領域:

//setting the name of the object just with the name of the variable 
//just for understanding purposes 
//you cannot access to the name of the variable at runtime, no matter what 
//also, you need to change the constructor of each class accordingly 
ShoeBox nike = new ShoeBox("nike"); 
Box present = new CandyBox("present",3,2,6); 
JewelryBox gift = new JewelryBox("gift"); 
Box pictures = new ShoeBox("pictures"); 
Box skittles=new CandyBox("skittles",6,3,1); 
CandyBox dots=new CandyBox("dots",3,2,1); 
Box jareds=new JewelryBox("jareds"); 

然後,當一個物體相匹配的標準,您可以將其用於您想要/需要的內容

  • 標準:最大音量
  • 怎麼做:顯示它的名字給用戶

代碼:

double temp = 0; 
Box boxWithLargestVolume = null; 
for (Box box : boxes) { 
    if (temp < x.getVolume()) { 
     temp = x.getVolume(); 
     boxWithLargestVolume = box; 
    } 
} 
if (boxWithLargestVolume != null) { 
    System.out.println("The box with the largest volume is: " 
     + boxWithLargestVolume.getName()); 
} 
+0

問題在於這個任務是由我的老師分配的。她給了我們構造函數的參數,她給了我們測試器的客戶端代碼,其中包括實例化框。 – 2014-11-23 02:44:56

+0

@NoahBarboza告訴你的教授,如果你沒有一個領域來識別你的對象,那麼將不會有任何人類的方式來識別它。這一切都在軟件中(並在我們的腦海中)。 – 2014-11-23 02:46:39