尝试扩展类时遇到麻烦

时间:2013-10-05 23:55:31

标签: java arrays arraylist compiler-errors

我正在编写一个程序,它将获取临时值和天数列表,并使用对象数组实现列表。每个对象将存储temp(double)和day(string)。然后我们需要对对象进行排序并输出它们。我用两个变量,get / set方法和构造函数创建了我的第一个类(DailyTemperature)。现在当我用其中的ArrayList创建我的第二个类(DailyTemperatureList)时,我在尝试添加到列表中时出现错误 “没有为add(java.lang.String,double)方法找到合适的方法java.util.ArrayList.add(int,DailyTemperature)不适用(实际参数java.lang.String不能通过方法调用转换转换为int)方法java.util.ArrayList.add(DailyTemperature)不适用,而且正式列表的长度不同。

我假设它是因为我试图使用DailyTemperature类中的变量。但是当我扩展它时,我得到一个错误,说类DailyTemperature中的构造函数DailyTemperature不能应用于给定的类型。我不知道为什么。我不应该延伸,也许还可以做其他事情吗?

这是我的代码:

import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;

public class DailyTemperature 
{
     //variables
    private double temperature;
    private 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;
    }


    public DailyTemperature(String day, double temperature) {

      this.day = day;
      this.temperature = temperature;
    }


}



import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;

public class DailyTemperatureList extends DailyTemperature
{
    public static void main (String [] args) {


    ArrayList<DailyTemperature> dailytemps = new ArrayList<DailyTemperature>();

    dailytemps.add("Mon", 78.1);
}
}

2 个答案:

答案 0 :(得分:2)

没有DailyTemperatureList扩展DailyTemperature。这不是继承的原因,因为某些东西不是什么东西。你的继承没有通过“is-a”测试;例如,大学班的学生不是个别学生的更具体的概念。而是让第一个类包含第二个类的ArrayList,或ArrayList<DailyTemperature>

此外,ArrayList有一个add方法,它接受一个参数,这里是DailyTemperature对象,或接受int和一个对象,但不接受String和一个对象。

我还要让DailyTemperature实现Comparable<DailyTemperature>接口,以便可以轻松地对其列表进行排序。

答案 1 :(得分:2)

dailytempsArrayList DailyTemperature。因此,在添加时,您需要添加DailyTemperature的实例:

dailytemps.add(new DailyTemperature("Mon", 78.1));

目前已实施,DailyTemperatureList无需延长DailyTemperature