2013-10-03 106 views
-5

我正在嘗試編寫一個程序,其中列出了溫度(Double)和每天(字符串),列表需要使用對象數組實現。使用對象數組實現列表

我不明白我如何創建一個雙打和字符串的列表,以及如何使用對象數組來實現它。

到目前爲止,這是我對我的程序:

public class dailyTemperature 
{ 

    //variables 
    double temperature; 
    String day; 

    //getTemp & setTemp methods 
    public double getTemp() 
    { 
     return temperature; 
    } 

    public void setTemp(double newTemp) 
    { 
     temperature = newTemp; 
    } 

    //getDay & setTEmp methods 
    public String getDay() 
    { 
     return day; 
    } 

    public void setDay(String newDay) 
    { 
     day = newDay; 
    } 



} 

但是我怎麼能創建雙打和字符串,以及如何實現使用對象的數組列表清單?我不知道如何做到這一點。

+2

封裝您的信息對。創建一個封裝類型的數組,添加元素。 –

+0

用兩個過濾溫度和一天的時間做一個課。 – Masudul

+1

嗨,Sophia,我注意到你可能從閱讀幫助部分中受益。如果您告訴我們您嘗試過的內容,發佈片段,並嘗試提出更具針對性的問題,我相信有人能夠提供幫助!檢查出來:http://stackoverflow.com/help/on-topic – Meesh

回答

3
// -- if you use lombok: --- 
// @Data 
// @AllArgsConstructor 
// ------------------------- 
public class TempOfTheDay { 
    private double temp; 

    private String day; // I would use and int (see Calendar.MONDAY etc) 

    // ctors, getters, setters, ... (if you don't use lombok :p) 
} 

,並把數組中的:

final TempOfTheDay[] myArray = new TempOfTheDay[]{ 
    new TempOfTheDay(127.0, "monday") 
}; 
+0

也應該實現有效的hasCode方法(請參閱Java文檔以瞭解應該如何完成hashCode),因爲如果將此對象存儲到使用hasCode方法的任何排序集合中 - 您可能會失去一些優勢或獲得Exception。 –

+0

@ProtosZetZ'@ Data'對我來說是這樣的;) – 2013-10-03 19:39:44

+0

對不起,我不知道這個註釋...之前。所以我應該閱讀文檔=) –

0

我只是做在C#中類似的東西。在這裏它被翻譯成Java。

您可以創建包含每個條目的信息類,例如:

public class DayTemperature  
    { 
      private String day; 
      private int temp; 

      public DayTemperature(String day, int temp) 
      { 
       this.day = day; 
       this.temp = temp; 
      } 
    } 

然後在你的程序,你可以實例化這個類,給那些一些值,然後把對象變成列表:

DayTemperature entry1 = new DayTemperature ("Monday", 123); 
    DayTemperature entry2 = new DayTemperature ("Tuesday", 23); 
    DayTemperature entry3 = new DayTemperature ("Wednesday", 50); 

    List<DayTemperature> list1 = new ArrayList<DayTemperature>(); 
    list1.add(entry1); 
    list1.add(entry2); 
    list1.add(entry3); 

希望這有助於

+0

與@RC答案相同的推薦 –

+0

java.util.List是一個接口,所以新的List()將不起作用。可以是LinkedList或ArrayList,後者在內部使用一組對象,這將滿足問題的需求。 –

+0

也'大寫字母'S' – 2013-10-03 19:41:41

0

你有幾個posibilities :)

壞一個:

Object[] result = new Object[1]; 
result[0] = new Object[]{"1.1", Double.valueOf(15,3)}; 

System.out.println("Day " + result[0][0] + " was temperature: " + result[0][1]); 

更好的一個:

class DayTemperature 
{ 
    final Strting date; 
    final Double temperature; 
    DayTemperature(String aDate, Double aTemperature) 
    { 
    date = sDate; 
    temperature = aTemperature; 
    } 
    String getDate() { return date;} 
    Double getTemperature() { return temperature;} 
} 

final DayTemperature[] result = new DayTemperature[1]; 
result[0] = new DayTemperature("1.1", Double.valueOf(12.5)); 

System.out.println("Day " + result[0].getDate() + " was temperature: " + result[0].getTemperature()); 

最好的,我建議你地圖:

Map<String, Double> result = new HashLinkedMap<String, Double>(1); 
result.put("1.1", Double.valueOf(12,5)); 

for(Map.Entry<String, Double> e : result.entrySet()) 
{ 
    System.out.println("Day " + e.getKey() + " was temperature: " + e.getValue()); 
} 

希望這將有助於。

相關問題