【发布时间】:2013-10-06 19:43:47
【问题描述】:
我创建了一个程序,它将温度(双精度)和日期(字符串)存储在数组列表中,然后使用可比较接口和插入排序对数组列表进行排序。现在我剩下的就是调用插入排序方法并打印出数组列表的原始顺序和排序顺序。但是,当我调用 insertsort 方法时,它会给我一个错误,指出“方法声明无效;需要返回类型”。为什么我会收到此错误?我的打印语句也可以正确打印出原始数组列表吗?我将如何更新它以打印出排序的数组列表?或者我可以从 insertsort 方法中打印出来吗?
这是我的代码:
import java.io.*;
import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
public class DailyTemperature implements Comparable<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;
}
public int compareTo(DailyTemperature other)
{
if (temperature < other.temperature) return -1;
if (temperature == other.temperature) return 0;
return 1;
}
public String toString()
{
return("Day of Week" + this.getDay() +
"Temperature" + this.getTemp());
}
}
import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
public class DailyTemperatureList
{
public static void main (String [] args)
{
ArrayList<DailyTemperature> dailytemps = new ArrayList<DailyTemperature>();
dailytemps.add(new DailyTemperature("Mon", 87.1));
dailytemps.add(new DailyTemperature("Tue", 88.3));
dailytemps.add(new DailyTemperature("Wed", 81.2));
dailytemps.add(new DailyTemperature("Thu", 84.0));
dailytemps.add(new DailyTemperature("Fri", 76.3));
}
public static <DailyTemperature extends Comparable<? super DailyTemperature>>
void insertionSort(ArrayList<DailyTemperature> dailytemps)
{
DailyTemperature temp = null;
int position = 0;
//loop from 2nd element on
for (int i = 1; i < dailytemps.size(); i++)
{
temp = dailytemps.get(i);
position = i;
while ( 0 < position && temp.compareTo(dailytemps.get(position - 1 )) < 0)
{
dailytemps.set(position, dailytemps.get(position - 1));
position--;
}
dailytemps.set(position,temp);
}
}
insertionSort(ArrayList<DailyTemperature> dailytemps);
System.out.println( dailytemps.toString() );
}
【问题讨论】:
-
@WilliamGaul。哼!那不是返回类型,那是类型参数声明。方法的返回类型仅为
void。 -
首先,在调用一个方法时,你没有给出你传递的参数的类型。它是从形式参数类型自动推断出来的。其次,您必须从方法内部调用该方法,例如
main。目前,您正在从所有方法之外调用它。您不能在类中直接包含语句。 -
@RohitJain 哎呀...没有看到下一行的
void。我想知道为什么“返回类型”的格式如此奇怪:P -
好的,我想你想把对
insertionSort的调用和它下面的行添加到main方法中。也从该行中删除ArrayList<DailyTemperature>。并从insertSort的签名中删除内的部分(static之后但void之前的部分)。应该这样做。 -
@DavidWallace 我修复了它,但它没有打印出排序后的数组它打印出随机顺序:这是输出“[星期几:星期五温度:76.3,星期几:星期四温度:84.0,星期几:星期三温度:81.2,星期几:星期二温度:88.3,星期几:星期一温度:87.1]"
标签: java methods arraylist insertion-sort