本帖最后由 Lee_Hoon_Leong 于 2016-10-2 11:16 编辑
package com.heima.demo;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class Demo_14 {
/**
* 编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,
* 并将所有已输入的字符串按字典顺序倒序打印。
*/
public static void main(String[] args) {
demo1();
}
private static void demo1() {
Scanner sc=new Scanner(System.in);
String string;
StringBuffer sb=new StringBuffer();
//当输入的不是end时进行循环,将输入的值追加在缓冲区字符串
while(!(string=sc.nextLine()).equals("end")){
sb.append(string);
sb.append(",");
}
//将缓冲区字符串转换为字符串后切割
String[] strarr=sb.toString().split(",");
//自定义比较器
TreeSet<Character> ts=new TreeSet<>(new Comparator<Character>() {
@Override
public int compare(Character c1, Character c2) {
int num=c2-c1;//倒序打印,正序c1-c2
//int num=c2.compareTo(c1);用比较器的形式
return num==0?1:num;
}
});
//外层循环将字符串转换为字符数组
for (int i = 0; i < strarr.length; i++) {
char[] carr=strarr.toCharArray();
//内层循环1:将字符数组中的数据包装后放入TreeSet
for (Character c : carr) {
ts.add(c);
}
//内层循环2:打印TreeSet中的数据
for (Character c : ts) {
System.out.print(c);
}
System.out.println();
}
}
}
也许是我写的太复杂了,最后的外层循环和内层循环恁是不明白。
还有,不知道各位黑马er有没有其他更好的方法
|
|