Java开发笔试上机题:使用Scanner先输入-需要输入数字的个数,在键盘输入指定个数的数,取每个数的最大数字,并组合成新的数字,并让数字组合为最大值,这里提供解答方式1,通过stream进行解答,输入使用String字符串实现。
在这里插入图片描述
实现效果如上图,先输入个数,这里输入个数为3,通过for循环输入三次数字,都存为String类型,通过split方法进行拆分并操作选出最大值,将最大值的集合进行降序排序即可

//这里将每个数取最大数字的部分,封装成了方法,也可以简化为一段代码实现
public class HomeTest2 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个数:");
        int number = sc.nextInt();
        //将输入的每个数存到list集合中
        List<String> list = new ArrayList<>();
        for (int i = 0; i < number; i++) {
            System.out.print("请输入第"+(i+1)+"个数:");
            list.add(sc.next());
        }
        //存放输入的列表中  每个数字的最大值
        List<String> sList = new ArrayList<>();
        //通过遍历输入的list数组,先获取到每个数的最大数字
        for (String string : list) {
            sList.add(findMax(string));
        }
        //将获取到的最大数字list,进行降序排序,并输出
        sList.stream().sorted(Comparator.reverseOrder()).forEach(System.out::print);

    }
    
    public static String findMax(String s) {
    //将输入的数进行通过""拆分,即表示每个数字都分开为个位,存到String[]数组,并转为stream,进行比较取最大值进行返回
        Optional<String> max = Arrays.stream(s.split("")).max(Comparator.comparing(str -> str));
        return max.orElse("0");
    }
}

简化后代码:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个数:");
        int number = sc.nextInt();
        List<String> list = new ArrayList<>();
        for (int i = 0; i < number; i++) {
            System.out.print("请输入第"+(i+1)+"个数");
            list.add(sc.next());
        }

        //可以简化为:
        list.stream().map(s -> Arrays.stream(s.split(""))
                        .max(Comparator.comparing(character -> character)).get())
                .sorted(Comparator.reverseOrder()).forEach(System.out::print);
    }

涉及到的知识点

  1. Java8新特性–Stream常用API及应用
  2. Java中Lambda表达式定义及应用+常见的函数接口+方法引用
  3. String类应用API等
Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐