我正在进行一项任务,我们必须创建温度列表(double)和days(String),并使用对象数组实现列表。每个对象都存储temp和day,我们可以在程序中分配temp和day。然后使用insert alogrithm排序并输出原始列表和排序列表。
我将温度和日期的分配放在dailyTemperature构造函数下并进行编译。我的最后一部分是for循环和if循环,我说它是否getTemp大于0添加到getTemperature ArrayList,但我认为这是错误的,因为getTemp没有分配温度。我是否必须在dailyTemperature中分别指定日期和温度?然后在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;
}
}
答案 0 :(得分:0)
因为这是家庭作业,我不打算给你完整的现成解决方案,但是给你一些指导,帮助你上路......
您正在构造函数中初始化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
这种混合没有意义 您需要为单个元素和元素列表使用单独的类。
类似的东西:
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);
}
您声明了一个局部变量getTemperature
。这有以下问题:
getTemperature
是一个令人困惑的名字。 get
你得到的就是吸气剂。它不是变量的好名称。getTemperature
将超出范围并将被垃圾收集器销毁。所以甚至如果有办法访问它,它会被破坏之前。 关于编码风格的评论
课程名称以大写字母开头
函数和变量名以小写字母开头。除了构造函数之外,它与类具有相同的名称,因此以大写字母开头。
我喜欢开场{
位于同一行的K&R style of coding。它在屏幕上保留了更多代码。 (但这只是我,如果你愿意,你可以忽略它)