![](/img/trans.png)
[英]Creating a method to print ArrayList, then calling it in another class
[英]Error when calling insertionsort method and how to print an arraylist
我創建了一個程序,將溫度(雙精度)和天(字符串)存儲在數組列表中,然后使用可比較的接口和插入排序對數組列表進行排序。 現在我剩下的就是調用插入排序方法,並打印出arraylist的原始順序和排序順序。 但是,當我調用insertssort方法時,它給我一個錯誤,指出“無效的方法聲明;需要返回類型”。 為什么我會收到此錯誤? 我的打印語句對打印出原始數組列表是否正確? 我將如何更新它以打印出已排序的數組列表? 還是可以通過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() );
}
但是,當我調用insertssort方法時,它給我一個錯誤,指出“無效的方法聲明;需要返回類型”。 為什么我會收到此錯誤?
您正在DailyTemperatureList類內部但在任何無法編譯的方法外部調用insertSort()。 我將調用移到main()方法中,以便對其進行編譯,請參見下面的內容。
我的打印語句對打印出原始數組列表是否正確? 我將如何更新它以打印出已排序的數組列表? 還是可以通過insertsort方法將其打印出來?
在調用insertSort()之前,先打印出原始列表,對它進行排序后,再打印出已排序的列表:
System.out.println( "original list:" );
System.out.println( dailytemps.toString() );
insertionSort( dailytemps);
System.out.println( "sorted list:" );
輸出:
original list: [Day of WeekMonTemperature87.1, Day of WeekTueTemperature88.3, Day of WeekWedTemperature81.2, Day of WeekThuTemperature84.0, Day of WeekFriTemperature76.3]
sorted list: [Day of WeekFriTemperature76.3, Day of WeekWedTemperature81.2, Day of WeekThuTemperature84.0, Day of WeekMonTemperature87.1, Day of WeekTueTemperature88.3]
更正了DailyTemperatureList類:
import java.io.*;
import java.util.Collections;
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));
System.out.println( "original list:" );
System.out.println( dailytemps.toString() );
insertionSort( dailytemps);
System.out.println( "sorted list:" );
System.out.println( dailytemps.toString() );
}
//public static <DailyTemperature extends Comparable<? super DailyTemperature>>
static 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);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.