黑马程序员技术交流社区

标题: 黑马入学考试编程题第16题(个人想的方法) [打印本页]

作者: 莫盛强    时间: 2015-10-23 18:15
标题: 黑马入学考试编程题第16题(个人想的方法)
题目:编写程序,循环接收胡勇从键盘输入多个字符串,知道输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。
作者: 莫盛强    时间: 2015-10-23 18:16
本帖最后由 莫盛强 于 2015-10-23 18:37 编辑

  1. package NO_16;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. /*
  6. *第一种比较原始的方法,基础排序方法进行倒序
  7. */
  8. public class LoopEnd {
  9.         public static void main(String[] args) throws IOException{
  10.         
  11.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  12.                
  13.                 System.out.println("输入字符串(输入'end'为结束字符串)");
  14.                
  15.                 StringBuilder sb = new StringBuilder();
  16.                
  17.                 while(true){
  18.                         String line = br.readLine();
  19.                    if(line.equals("end")){
  20.                stringSort(sb.toString());
  21.                            break;
  22.                    }else{
  23.                            sb.append(line);
  24.                    }
  25.                 }
  26.                
  27.                 br.close();
  28.         }
  29.         
  30.         public static void stringSort(String line){
  31.                
  32.                    char[] chs = line.toCharArray();
  33.                     
  34.                    //用选择排序进行倒序(其他排序方法亦可)
  35.                    for(int i=0;i<chs.length;i++){
  36.                            for(int j=i+1;j<chs.length;j++){
  37.                                    if(chs<chs[j]){
  38.                                            char change = chs[j];
  39.                                            chs[j] = chs;
  40.                                            chs = change;
  41.                                    }
  42.                            }
  43.                    }
  44.                   
  45.                    for(char c:chs){
  46.                            System.out.print(c);
  47.                    }
  48.         }
  49. }
复制代码



作者: 莫盛强    时间: 2015-10-23 18:25
  1. package NO_16;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.Arrays;
  6. /*
  7. *第二种先排序,再用字符串拼接
  8. */
  9. public class LoopEnd {
  10.         public static void main(String[] args) throws IOException{
  11.        
  12.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  13.                
  14.                 System.out.println("输入字符串(输入'end'为结束字符串)");
  15.                
  16.                 StringBuilder sb = new StringBuilder();
  17.                
  18.                 while(true){
  19.                         String line = br.readLine();
  20.                    if(line.equals("end")){
  21.                           
  22.                stringSort(sb.toString());//调用方法
  23.                            break;
  24.                    }else{
  25.                            sb.append(line);
  26.                    }
  27.                 }
  28.                 br.close();
  29.         }
  30.        
  31.         public static void stringSort(String line){
  32.                
  33.                    char[] chs = line.toCharArray();
  34.                   
  35.                    Arrays.sort(chs);//排序
  36.                     
  37.                    String s = "";
  38.                   
  39.                    for(char c:chs){//遍历并字符串拼接
  40.                            s = c+s;
  41.                    }
  42.                   
  43.                    System.out.println(s);
  44.            }
  45. }
复制代码

作者: 莫盛强    时间: 2015-10-23 18:36
  1. package NO_16;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.Collections;
  7. import java.util.Comparator;
  8. /*
  9. *可是按着题目上的答案,用比较器强行逆转排序,为什么我输出的结果没有倒序?
  10. *   是哪一步有问题?在线求指导。
  11. */
  12. public class LoopEnd2 {
  13.         public static void main(String[] args) throws IOException {

  14.                 ArrayList<String> al = new ArrayList<>();

  15.                 stringSort(al);

  16.                 Comparator<String> com = Collections.reverseOrder();//获取反向的字符串比较器

  17.                 Collections.sort(al, com);//根据比较器排序集合

  18.                 for (String s : al) {
  19.                         System.out.print(s);
  20.                 }
  21.         }

  22.         public static void stringSort(ArrayList<String> al) throws IOException {

  23.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

  24.                 System.out.println("输入字符串(输入'end'为结束字符串)");

  25.                 String line = null;
  26.                 while ((line = br.readLine()) != null) {
  27.                         if ("end".equals(line)) {
  28.                                 break;
  29.                         } else {
  30.                                 al.add(line);
  31.                         }
  32.                 }

  33.                 br.close();
  34.         }
  35. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2