Java 使用对象数组实现列表

Java 使用对象数组实现列表,java,arrays,arraylist,Java,Arrays,Arraylist,我正在做一项任务,我们必须创建温度(双倍)和天数(字符串)的列表,并使用对象数组实现该列表。每个对象存储温度和日期,我们可以在程序中指定温度和日期。然后使用插入算法进行排序,并输出原始列表和已排序列表 我将温度和日期的分配放在dailyTemperature构造函数下,然后进行编译。我的最后一部分是for循环和if循环,我让它说明getTemp是否大于0添加到gettemperaturearraylist,但我认为这是错误的,因为getTemp没有为它指定温度。我是否需要在每日温度中分别指定天数

我正在做一项任务,我们必须创建温度(双倍)和天数(字符串)的列表,并使用对象数组实现该列表。每个对象存储温度和日期,我们可以在程序中指定温度和日期。然后使用插入算法进行排序,并输出原始列表和已排序列表

我将温度和日期的分配放在dailyTemperature构造函数下,然后进行编译。我的最后一部分是for循环和if循环,我让它说明getTemp是否大于0添加到gettemperaturearraylist,但我认为这是错误的,因为getTemp没有为它指定温度。我是否需要在每日温度中分别指定天数和温度?然后调用if语句中指定温度的变量

这是我的密码:

 import java.util.ArrayList;

public class dailyTemperature 
{

    //variables
    private double temperature;
    private String day;
    private static ArrayList<dailyTemperature> temp = new ArrayList<dailyTemperature>();


    //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;
    }


    public dailyTemperature(String dayInput, double temperatureInput) {
       this.day = day;
       this.temperature = temperature;
       temp.add(this);


      this.day = dayInput;
      this.temperature = temperatureInput;



    dailyTemperature[] getTemperature = new dailyTemperature[5];
    getTemperature[0] = new dailyTemperature("Mon", 70.0);
    getTemperature[1] = new dailyTemperature("Tue", 80.0);
    getTemperature[2] = new dailyTemperature("Wed", 65.2);
    getTemperature[3] = new dailyTemperature("Thur", 67.0);
    getTemperature[4] = new dailyTemperature("Fri", 68.5);


    }

    public static ArrayList<dailyTemperature> getTemperature()
    {
        ArrayList<dailyTemperature> getTemperature = new ArrayList<dailyTemperature>();
        for(dailyTemperature i : temp)
        {
            if(i.getTemp() > 0)
                getTemperature.add(i);
        }
        return getTemperature;
    }
}
import java.util.ArrayList;
公共类每日温度
{
//变数
私人双温;
私人弦日;
私有静态ArrayList temp=new ArrayList();
//getTemp和settmp方法
公共双getTemp()
{
返回温度;
}
公共无效设置(双新时间)
{
温度=newTemp;
}
//getDay和settmp方法
公共字符串getDay()
{
回归日;
}
公共无效设置日(字符串newDay)
{
day=newDay;
}
公共每日温度(字符串日输入,双温度输入){
this.day=天;
这个温度=温度;
临时添加(本);
this.day=dayInput;
该温度=温度输入;
dailyTemperature[]getTemperature=新的dailyTemperature[5];
getTemperature[0]=新的每日温度(“周一”,70.0);
getTemperature[1]=新的每日温度(“Tue”,80.0);
getTemperature[2]=新的每日温度(“Wed”,65.2);
getTemperature[3]=新的每日温度(“星期四”,67.0);
getTemperature[4]=新的每日温度(“Fri”,68.5);
}
公共静态数组列表getTemperature()
{
ArrayList getTemperature=新的ArrayList();
用于(每日温度i:temp)
{
if(i.getTemp()>0)
获取温度。添加(i);
}
返回温度;
}
}

因为这是家庭作业,我不会给你完整的现成解决方案,但会给你一些建议,帮助你在路上

您正在初始化构造函数中的
DailyTemperature
列表。
但是,这是没有意义的,因为该列表是构造函数的本地列表,在构造函数之外不可访问。
在课堂上,你也在以一种毫无意义的方式混合东西

课堂问题

public class DailyTemperature { 
    //variables
    private double temperature;   <<-- single element
    private String day;           <<-- single element
    private static ArrayList<dailyTemperature> temp = new ArrayList<dailyTemperature>
    ^
    +----- list of elements
公共类每日温度{
//变数

私有双温;次要挑剔:java中的函数以小写字母开头;但是构造函数与类的名称匹配,因此(按照约定)以大写字母开头。就像类名一样,它是
DailyTemperature
而不是
daily….
@Johan谢谢,我刚刚更改了它们。你的问题不清楚--“我必须在DailyTemperature中分别指定日期和温度吗?”--不知道你说的分开是什么意思。你已经在构造函数中为每个值赋值两次了,并且在构造函数中创建和填充了一个数组。我想你的构造函数的前三行就是所需要的了,在那之后就结束了。用其他方法填充数组。是的,温度可以是负的,所以我不会如果你的代码中有不正常的地方,你就没有提到它…@rcook前面三行的意思是:this.day=dayinport;this.temperature=temperatureInput;dailytimperature[]getTemperature=newdailytimperature[5];我不知道如何仅使用get和set方法来添加温度和天数?或者这行getTemperature[0]=新的dailyTemperature(“Mon”,70.0);添加天数和温度?@rcook,你的意思是:前两行是构造函数中需要的全部内容。在
DailyTemp
类中不应该有列表。我对是否需要get和set方法以及dailyTemperature[]getTemperature=new dailyTemperature[5]感到困惑;我搞不清楚我到底是如何分配“创建一个包含日期和温度的列表,然后使用对象数组实现它们的”。Ach dailytemp单独放置,只存储一天。然后你将它们放入列表中。一次一个。因此你需要两个类。一个用于简单元素,一个用于保存集合。我正在尝试创建第二个类,但是当我扩展到第一个类时,我得到一个错误,说类DailyTemperature中的构造函数DailyTemperature不能应用于给定的类型;java.lang.String,double;found:无参数;原因实际参数和形式参数列表长度不同新类需要扩展原始类吗?不,第一个类是单个温度元素,第二个元素就是你在列表中推送元素。没有扩展。如果你操作整数,你会扩展
integer
类吗?
public class DailyTemp {
  private double temperature;
  private Date day;
  //followed with getters and setters 
  //and a constructor
}

ArrayList<DailyTemp> dailyTemps = new ArrayList<DailyTemp>();
  public DailyTemperature(String dayInput, double temperatureInput) {
   this.day = day;                   
   this.temperature = temperature;   <<-- so far so good.
   temp.add(this);        <<--- No, this is a single element, no lists in here

  this.day = dayInput;     <<-- user input should never be in a constructor
  this.temperature = temperatureInput;  <<--??

  dailyTemperature[] getTemperature = new dailyTemperature[5];  <<--see 
  getTemperature[0] = new dailyTemperature("Mon", 70.0);    <<---  comments
  getTemperature[1] = new dailyTemperature("Tue", 80.0);    <<---  below
  getTemperature[2] = new dailyTemperature("Wed", 65.2);
  getTemperature[3] = new dailyTemperature("Thur", 67.0);
  getTemperature[4] = new dailyTemperature("Fri", 68.5);
}