黑马程序员技术交流社区
标题:
黑马入学考试编程题第16题(个人想的方法)
[打印本页]
作者:
莫盛强
时间:
2015-10-23 18:15
标题:
黑马入学考试编程题第16题(个人想的方法)
题目:编写程序,循环接收胡勇从键盘输入多个字符串,知道输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。
作者:
莫盛强
时间:
2015-10-23 18:16
本帖最后由 莫盛强 于 2015-10-23 18:37 编辑
package NO_16;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
*第一种比较原始的方法,基础排序方法进行倒序
*/
public class LoopEnd {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入字符串(输入'end'为结束字符串)");
StringBuilder sb = new StringBuilder();
while(true){
String line = br.readLine();
if(line.equals("end")){
stringSort(sb.toString());
break;
}else{
sb.append(line);
}
}
br.close();
}
public static void stringSort(String line){
char[] chs = line.toCharArray();
//用选择排序进行倒序(其他排序方法亦可)
for(int i=0;i<chs.length;i++){
for(int j=i+1;j<chs.length;j++){
if(chs<chs[j]){
char change = chs[j];
chs[j] = chs;
chs = change;
}
}
}
for(char c:chs){
System.out.print(c);
}
}
}
复制代码
作者:
莫盛强
时间:
2015-10-23 18:25
package NO_16;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/*
*第二种先排序,再用字符串拼接
*/
public class LoopEnd {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入字符串(输入'end'为结束字符串)");
StringBuilder sb = new StringBuilder();
while(true){
String line = br.readLine();
if(line.equals("end")){
stringSort(sb.toString());//调用方法
break;
}else{
sb.append(line);
}
}
br.close();
}
public static void stringSort(String line){
char[] chs = line.toCharArray();
Arrays.sort(chs);//排序
String s = "";
for(char c:chs){//遍历并字符串拼接
s = c+s;
}
System.out.println(s);
}
}
复制代码
作者:
莫盛强
时间:
2015-10-23 18:36
package NO_16;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
*可是按着题目上的答案,用比较器强行逆转排序,为什么我输出的结果没有倒序?
* 是哪一步有问题?在线求指导。
*/
public class LoopEnd2 {
public static void main(String[] args) throws IOException {
ArrayList<String> al = new ArrayList<>();
stringSort(al);
Comparator<String> com = Collections.reverseOrder();//获取反向的字符串比较器
Collections.sort(al, com);//根据比较器排序集合
for (String s : al) {
System.out.print(s);
}
}
public static void stringSort(ArrayList<String> al) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入字符串(输入'end'为结束字符串)");
String line = null;
while ((line = br.readLine()) != null) {
if ("end".equals(line)) {
break;
} else {
al.add(line);
}
}
br.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2