Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用insertionsort方法以及如何打印arraylist时出错_Java_Methods_Arraylist_Insertion Sort - Fatal编程技术网

Java 调用insertionsort方法以及如何打印arraylist时出错

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

我创建了一个程序,在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() );





}
import java.io.*;
导入java.util.Scanner;
导入java.util.array;
导入java.util.ArrayList;
公共类DailyTemperature实现可比较
{
//变数
私人双温;
私人弦日;
//getTemp和settmp方法
公共双getTemp()
{
返回温度;
}
公共无效设置(双新时间)
{
温度=newTemp;
}
//getDay和settmp方法
公共字符串getDay()
{
回归日;
}
公共无效设置日(字符串newDay)
{
day=newDay;
}
公众每日温度(连续日、双倍温度)
{
this.day=天;
这个温度=温度;
}
公共内部比较(每日温度其他)
{
如果(温度<其他温度)返回-1;
如果(温度==其他温度)返回0;
返回1;
}
公共字符串toString()
{
return(“星期几”+this.getDay()+
“温度”+this.getTemp());
}
}
导入java.io.*;
导入java.util.Scanner;
导入java.util.ArrayList;
公共类每日温度表
{
公共静态void main(字符串[]args)
{
ArrayList dailytemps=新的ArrayList();
添加(新的每日温度(“周一”,87.1));
每日温度添加(新的每日温度(“星期二”,88.3));
添加(新的每日温度(“Wed”,81.2));
添加(新的每日温度(“Thu”,84.0));
每日温度添加(新的每日温度(“Fri”,76.3));
}
公共静电
但是,当我调用insertionsort方法时,它会给我一个错误,说明“方法声明无效;返回类型必需”。为什么我会收到这个错误

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

打印原始arraylist时,我的print语句是否正确?我如何更新它以打印排序后的arraylist?或者我可以从insertionsort方法打印出来

在调用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);
    }
  }






}
import java.io.*;
导入java.util.Collections;
导入java.util.Scanner;
导入java.util.ArrayList;
公共类每日温度表
{
公共静态void main(字符串[]args)
{
ArrayList dailytemps=新的ArrayList();
添加(新的每日温度(“周一”,87.1));
每日温度添加(新的每日温度(“星期二”,88.3));
添加(新的每日温度(“Wed”,81.2));
添加(新的每日温度(“Thu”,84.0));
每日温度添加(新的每日温度(“Fri”,76.3));
System.out.println(“原始列表:”);
System.out.println(dailytemps.toString());
插入排序(每日临时);
System.out.println(“排序列表:”);
System.out.println(dailytemps.toString());
}

//public static@WilliamGaul.Huh!那不是返回类型,那是类型参数声明。方法的返回类型仅为
void
。首先,在调用方法时,您没有给出您传递的参数的类型。它是从形式参数类型自动推断出来的。其次,您必须从方法内部调用该方法,说
main
。当前您正在从所有方法外部调用它。您不能在类中直接包含语句。@RohitJain呜呜……在下一行中没有看到
void
。我想知道为什么“返回类型”格式太奇怪了:POK,我想你想把对
insertionSort
的调用和它下面的那一行添加到main方法中。也从那一行中删除
ArrayList
。然后删除里面的部分(在
static
之后但在
void
之前的部分)根据
insertSort
的签名,应该这样做。@DavidWallace我修复了它,但它不打印排序后的数组,而是打印一个随机顺序:这是输出”[工作日:周五温度:76.3,工作日:周四温度:84.0,工作日:周三温度:81.2,工作日:周二温度:88.3,工作日:周一温度:87.1]”非常感谢,它起作用了!我能问一下它对您的作用吗?因为当我调用时,将调用方法和打印语句移动到了main方法,我得到了以下命令:[工作日:周五温度:76.3,工作日:周四温度:84.0,工作日:周三温度:81.2,工作日:周二温度:88.3,工作日:周一温度:87.1]“-哪一个不是原始顺序或排序顺序嗯,不知道,你应该得到一个排序列表。看起来你打印了原始列表,但顺序相反。你确定没有更改任何其他内容,例如排序算法。或compareTo()方法?我不确定这是否重要,但我从DailyTemperature类中获取了可比较的工具,它起了作用。但当我将其添加回时,我收到了以前得到的输出。现在我将其取出,仍然收到相同的错误输出。此行的作用是什么:Collections.sort(dailytemps)这行错了。哦,对不起,它没用,我只是在测试