Java中compare倒数排序问题,运行出错怎么回事



```java
public static void main(String[] args) {
        System.out.println("请输入一串整数:");
        Scanner sc = new Scanner(System.in);
        Vector vector = new Vector();
        String tmp = sc.nextLine();
        String[] strings = tmp.split(" ");
        for(String x:strings){
            var add = vector.add(Integer.parseInt(x));
        }
        Collections.sort(vector, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                if(1/o1-1/o2<0){
                    return 1;
                }
                else if(1/o1-1/o2>0) {
                    return -1;
                }
                 return 0;
            }
        });
        System.out.println("按倒数排列:\n"+vector);
}

```

虽然你没说,我猜是除0错误,直接两个数比较大小不好?偏要用分数来吗

你直接return0 得了,除非 o1、o2 是1,不然你那两if都不成立

这个var看懵了,这不是js里面的么

兄弟你搞复杂了,比较用Integer的compareTo比较大小方法就可以了,A.compareTo(B) 如果A小于、等于或大于B,则分别返回负整数、零或正整数。
另外报错是因为这行代码var add = vector.add(Integer.parseInt(x)); java中没有var类型,可以改成boolean add = vector.add(Integer.parseInt(x)); 更简洁一点
改成vector.add(Integer.parseInt(x));

    
public static void main(String[] args) {
        System.out.println("请输入一串整数:");
        Scanner sc = new Scanner(System.in);
        Vector<Integer> vector = new Vector<>();
        String tmp = sc.nextLine();
        String[] strings = tmp.split(" ");
        for(String x:strings){
            vector.add(Integer.parseInt(x));
        }
        Collections.sort(vector, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2.compareTo(o1);//倒序
                //return o1.compareTo(o2);//正序
            }
        });
        System.out.println("按倒数排列:\n"+vector);
    }