gpt4 book ai didi

java - 在 Java 中对数组列表进行排序时无法转换为类错误

转载 作者:行者123 更新时间:2023-12-01 19:57:15 25 4
gpt4 key购买 nike

我试图向对象数组列表中添加一个数字,但不断收到“无法转换”错误。

我对 Java 还很陌生,所以请放轻松

我的代码如下,任何帮助将不胜感激。如果有任何问题请联系我

public class runningClass {

public class Sortbymake implements Comparator<runningClass>
{
@Override
public int compare(runningClass a, runningClass b)
{
return b.numb.compareTo(a.numb);
}
}

private String numb;

public runningClass(String nNumb)
{
this.numb = nNumb;
}

public String getNumber(){
return numb;
}

public void oof()
{
Scanner scan = new Scanner(System.in);
while(ptr <= 5)
{
System.out.println("What number do you want to add");
System.out.println("Ptr = "+ptr);
this.numb = scan.next();
numberList.add(new runningClass(this.numb));
ptr++;
}
Collections.sort(numberList, null);
}

public void searchList()
{
int Sptr = 0;
Scanner scan = new Scanner(System.in);
System.out.println("What is the number your searching for?");
String userSearch = scan.next();
for(int u = 0; u < numberList.size();u++)
{
//loop is created, will check if any index contains the entered text
if(numberList.get(Sptr).getNumber().contains(userSearch))
{
System.out.println("The "+userSearch+" is located at index "+u);
break;
}
else
{
Sptr++;
}
}
}

}

这是我收到的错误,如果您希望我发布完整的错误,请与我联系

Exception in thread "main" java.lang.ClassCastException: class arraysearch.runningClass cannot be cast to class java.lang.Comparable (arraysearch.runningClass is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap')

最佳答案

您的类 RunningClass 未实现 Comparable,并且 Collections.sort 需要 Comparable,因为您未指定任何比较器实例。

为什么要定义一个新类 Sortbymake 来实现 Comparator 并且从不在任何地方使用它?

我认为你不明白 Comparator 和 Comparable 之间的区别(来自 source ):

  • Comparable:Comparable 是一个接口(interface),定义了将一个对象与其他相同类型的对象进行比较的策略。这称为类的“自然顺序”;
  • Comparator:Comparator 接口(interface)定义了一个compare(arg1, arg2) 方法,该方法有两个代表比较对象的参数,其工作方式与 Comparable.compareTo() 方法类似。

现在,您有两个解决方案(第一个对我来说是正确的):

在本例中,请在您的 RunningClass 上使用 Comparable 接口(interface),并调用 Collections.sort(numberList) 方法。这将利用 RunningClass 类中包含的 compareTo 方法的实现。

使用Sortbymake类,但在调用sort方法时指定比较器:Collections.sort(numberList, new Sortbymake())

关于java - 在 Java 中对数组列表进行排序时无法转换为类错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59028747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com