A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:编写程序,循环接收胡勇从键盘输入多个字符串,知道输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

3 个回复

倒序浏览
本帖最后由 莫盛强 于 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. }
复制代码


回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马