有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

调用insertionsort方法以及如何打印arraylist时发生java错误

我创建了一个程序,在arraylist中存储温度(double)和日期(string),然后使用可比较的接口和插入排序对arraylist进行排序。现在我只剩下调用插入排序方法并打印出arraylist的原始顺序和排序顺序。但是,当我调用insertionsort方法时,它会给出一个错误,说明“方法声明无效;返回类型必需”。为什么我会收到这个错误?我的打印语句打印出原始arraylist是否正确?如何更新它以打印出排序的arraylist?或者我可以从insertionsort方法打印出来吗

这是我的密码:

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() );





}

共 (1) 个答案

  1. # 1 楼答案

    However when I call the insertionsort method it gives me an error stating "invalid method declaration; return type required". Why am i receiving this error?

    您正在DailyTemperatureList类内部调用insertionSort(),但在任何未编译的方法外部调用。 我将调用移到main()方法中,以便它进行编译,请参见下面的内容

    Also is my print statement correct to print out the original arraylist? How would i update it to print out the sorted arraylist? Or can i print that out from the insertionsort method?

    在调用insertionSort()之前打印出原始列表,排序后打印出排序后的列表:

    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]
    

    更正的每日温度列表等级:

    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);
        }
      }
    
    
    
    
    
    
    }