Java开发笔试实战上机题:先输入个数,输入指定个数的数,取每个数的最大数字,并组合成新的数字,并让数字组合为最大值,解答方式1
·
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);
}
涉及到的知识点
更多推荐


所有评论(0)