首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组按顺序排列

问数组按顺序排列
EN

Stack Overflow用户
提问于 2020-07-30 20:48:59
回答 3查看 78关注 0票数 0
代码语言:javascript
复制
Error:(33, 15) java: no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>)
    method java.util.Arrays.<T>sort(T[],java.util.Comparator<? super T>) is not applicable
      (inference variable T has incompatible bounds
        equality constraints: int
        lower bounds: java.lang.Object)
    method java.util.Arrays.<T>sort(T[],int,int,java.util.Comparator<? super T>) is not applicable
      (cannot infer type-variable(s) T
        (actual and formal argument lists differ in length))

我不明白为什么Array.sort(num, Collections.reverseOrder())中的num是错误的?

代码语言:javascript
复制
    Scanner s = new Scanner(System.in);

    int a = s.nextInt();
    int b = s.nextInt();
    int c = s.nextInt();

    int[] num = new int[3];

    num[0] = a;
    num[1] = b;
    num[2] = c;


    Arrays.sort(num, Collections.reverseOrder());
    for (int i = 0; i < num.length; i++) {
        System.out.println(num[i] + " ");
    }

还有别的办法可以解决吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-30 20:55:07

没有Arrays.sort方法接受int[]和Comparator --接受Comparator的方法请求Object数组或Object的任何子类(例如Integer[])。

背景信息:类型变量(泛型)不能引用原语,因此

代码语言:javascript
复制
<T> void sort(T[], Comparator<? super T>)

对int[]无效。

票数 2
EN

Stack Overflow用户

发布于 2020-07-30 21:02:45

我可以推荐您使用Java 8流。我会这样做:

代码语言:javascript
复制
Stream.of(num).sorted(Collections.reverseOrder());

如果您想使用Arrays.sort(),那么只需要选择int[]作为第一个参数来提供另外两个参数(int fromIndex,int toIndex),这也是使用(int[],比较器)参数获得异常的原因。

票数 1
EN

Stack Overflow用户

发布于 2020-07-30 20:59:01

使用ArrayList代替

代码语言:javascript
复制
import java.util.*;
public class Main {
   public static void main (String[] args) {
     Scanner s = new Scanner(System.in);

    int a = s.nextInt();
    int b = s.nextInt();
    int c = s.nextInt();

      ArrayList<Integer> list = new ArrayList<Integer>();
      list.add(a);
      list.add(b);
      list.add(c);
      Comparator c1 = Collections.reverseOrder();
      Collections.sort(list,c1);
      System.out.println("Desending Order : " + list);
   }
}

这就行了。您可以使用数组进行初始化。

下面的代码为我使用了Array

代码语言:javascript
复制
import java.util.Arrays; 
import java.util.Collections; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
        Integer[] arr = {2, 1, 3}; 
        Arrays.sort(arr, Collections.reverseOrder()); 
        System.out.printf("Desending Order : %s", Arrays.toString(arr)); 
    } 
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63181184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档