java - main 中的 Arrays.sort() 错误

标签 java arrays sorting

所以我有一个程序,它可以从用户处获取降雨测量值,并在 RainFall 类的帮助下将其存储到一个数组中,该类仅具有基本的设置/获取更改器(mutator)和访问器。我的问题是,由于某种原因,程序在 Arrays.sort() 行崩溃。我是否需要为该行创建一个新方法?如果是的话那会是什么样子?

import java.util.Arrays;
import java.util.Scanner;
public class Lab7rain {

  public static void main(String[] args) {
    double amount=0;//VARIABLE DECLARATIONS
    RainFall r = new RainFall(amount);//CREATE OBJECT
    Scanner kb = new Scanner(System.in);//ALLOCATE SPACE
    RainFall[] month = new RainFall[12];

    for(int i=0; i<12; i++){
     System.out.println("What was the amount of rain in "+r.date()+"?");//rain per month
     amount = kb.nextDouble();//gets input
     month[i]= new RainFall(amount); //stores amount into array slot
     System.out.println();
     r.setTotal(amount);//sends amount to method that adds them together to create a total
    } 

    kb.close();

    r.setAvg();//initiates method that divides total by 12 to get average rain fall per month

    System.out.println(r.getTotal());//print total rain fall
    System.out.println(r.getAvg());//print average rain fall
    System.out.println();//skip line

    Arrays.sort(month);//i want this to sort the array so i can
    //then print out the highest and lowest months
    System.out.println(month[0]+" "+month[11]);
  }
}

线程“main”中的异常 java.lang.ClassCastException:lab7rain.RainFall 无法转换为 java.lang.Comparable 在 java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290) 在 java.util.ComparableTimSort.sort(ComparableTimSort.java:157) 在 java.util.ComparableTimSort.sort(ComparableTimSort.java:146) 在 java.util.Arrays.sort(Arrays.java:472) 在 lab7rain.Lab7rain.main(Lab7rain.java:46) Java 结果:1

最佳答案

根据评论部分中的错误,您需要在 RainFall 类上实现 Comparable 接口(interface),然后才能使用 Arrays.sort() 方法或使用 Comparator,如 @ElliotFrisch 在他的答案中向您展示的那样。

public class RainFall implements Comparable<RainFall> {

    double amount;
    // your code

    public int compareTo(RainFall r) {
        return Double.compare(this.amount, r.amount); 
    }

}

关于java - main 中的 Arrays.sort() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26321128/

相关文章:

ios - 数组中的数组(二维数组?)

c++ - 文件输入到 struct struct 数组中

ios - 使用 Swift 按字母顺序对 TableView 单元格进行排序

arrays - 关于数组中的就地合并

java - 如何在java中返回一个 boolean 方法?

Java Process.Destroy() 不会杀死所有进程

java - 检查 IE8 浏览器中是否启用了 java

c# - 在 C# 中比较 3 个数组长度的好方法?

java - Java 中的方法不返回任何内容

java - Solr:搜索排除更大的短语