黑马程序员技术交流社区
标题:
循环接收用户从键盘输入多个字符串,直到输入“end”时...
[打印本页]
作者:
Lee_Hoon_Leong
时间:
2016-10-2 00:21
标题:
循环接收用户从键盘输入多个字符串,直到输入“end”时...
本帖最后由 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有没有其他更好的方法
作者:
莫华军
时间:
2016-10-2 07:06
这不是挺好的吗
作者:
逍遥荻花
时间:
2016-10-2 10:50
我们还没有学到TreeSet啊
作者:
langyabang1110
时间:
2016-10-2 11:11
比较那里还没学到
作者:
13902480061
时间:
2016-10-4 02:05
treeset存进来倒着出来就是的。
作者:
月微怜
时间:
2016-12-31 19:45
思路很清晰,,渣渣如我也能看懂Y(^o^)Y
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2