胡森


私信TA

用户名:uq_78608964351

访问量:121

签 名:

等  级
排  名 12623
经  验 965
参赛次数 20
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

自定义排序
浏览:67

解题思路:先将每个数的数位之和求出来进行比较,自定义排序会根据最后的返回值看是否会交换两个数的值,就算数位之和相同,arrays函数也会根据值得大小进行排序。

注意事项:

参考代码:import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class 数位排序 {
   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n = sc.nextInt();
       int m = sc.nextInt();
       Integer[] s = new Integer[n];
       for (int i = 0; i < s.length; i++) {
           s[i] = i + 1;
       }
       Arrays.sort(s, new Comparator<Integer>() {
           @Override
           public int compare(Integer o1, Integer o2) {
               Integer bs1 = asen(o1);
               Integer bs2 = asen(o2);
               if (bs1 < bs2) {
                   return -1;//
               } else if (bs1 > bs2) {
                   return 1;//返回1,会交换值
               } else {
                   return 0;
               }
           }
       });
       System.out.println(s[--m]);//因为下标是从0开始
   }

   public static int asen(int j) {//将每个数的各个数位之和相加
       int sum = 0;
       String u = j + "";
       for (int i = 0; i < u.length(); i++) {
           char h = u.charAt(i);
           sum += h - '0';
       }
       return sum;
   }
}

 

0.0分

1 人评分

  评论区

  • «
  • »