我正在编写一个程序,它将获取临时值和天数列表,并使用对象数组实现列表。每个对象将存储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);
}
}
答案 0 :(得分:2)
没有DailyTemperatureList扩展DailyTemperature。这不是继承的原因,因为某些东西不是什么东西。你的继承没有通过“is-a”测试;例如,大学班的学生不是个别学生的更具体的概念。而是让第一个类包含第二个类的ArrayList,或ArrayList<DailyTemperature>
。
此外,ArrayList有一个add方法,它接受一个参数,这里是DailyTemperature对象,或接受int和一个对象,但不接受String和一个对象。
我还要让DailyTemperature实现Comparable<DailyTemperature>
接口,以便可以轻松地对其列表进行排序。
答案 1 :(得分:2)
dailytemps
是ArrayList
DailyTemperature
。因此,在添加时,您需要添加DailyTemperature
的实例:
dailytemps.add(new DailyTemperature("Mon", 78.1));
目前已实施,DailyTemperatureList
无需延长DailyTemperature
。