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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

10黑马币
      编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。
*  注释:前面已做完,对于这就话【并将所有已输入的字符串按字典顺序倒序打印。】下面的代码怎么去实现??
*/
public class SystemDemo {
        public static void main(String[] args) throws IOException {        
                BufferedWriter bus=new BufferedWriter(new OutputStreamWriter(System.out));               
                BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
                String s=null;               
                while((s=buf.readLine())!=null){                                    
                        if("end".equals(s)){
                                 break;
                        }                                                
                        bus.write(s);
                        bus.newLine(); //写入一个行分隔符。
                        bus.flush();
               }
                buf.close();
     }
               

}


最佳答案

查看完整内容

我在你的基础上增加的,你看看行不行:

11 个回复

倒序浏览
我在你的基础上增加的,你看看行不行:
  1. import java.io.*;
  2. import java.util.*;

  3. public class SystemDemo {
  4.         public static void main(String[] args) throws IOException {
  5.                 PrintWriter out = new PrintWriter(System.out);
  6.                 BufferedReader in = new BufferedReader(
  7.                                                         new InputStreamReader(System.in));
  8.                 String line = null;
  9.                 while((line=in.readLine()) != null) {
  10.                         if ("end".equalsIgnoreCase(line)) {
  11.                                 break;
  12.                         }
  13.                         String temp = sort(line);       
  14.                         out.println(temp);
  15.                         out.flush();
  16.                 }

  17.                 in.close();
  18.                 out.close();
  19.         }
  20.         
  21.        //对字符串的内容进行排序,应该按ASCII码排序吧
  22.         public static String sort(String str) {
  23.                 char[] chs = str.toCharArray();
  24.                 Arrays.sort(chs);

  25.                 return new String(chs);
  26.         }
  27. }
复制代码

回复 使用道具 举报
你直接用个StringBuffer把字符串存起来,排序就是按abcd这种循序排序,排完就打印
回复 使用道具 举报
把字母转成ASCII码  然后就好排序了
回复 使用道具 举报
编写一个函数,在写入之前对字符串排序处理~~应该也可以吧
回复 使用道具 举报
我已解决:
代码如下:
package vom.vice.start;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* 读取键盘录入
* System.out  输出/读/字节打印流/控制台  
* syso.in     输入/写/字节输入流/键盘
* @author Administrator
*
*  编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。
*
*/
public class SystemDemo {

        public static void main(String[] args) throws IOException {                               
               
                BufferedWriter bus=new BufferedWriter(new OutputStreamWriter(System.out));
               
                BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
                String s=null;               
                while((s=buf.readLine())!=null){                                    
                        if("end".equals(s)){
                                 break;
                        }
                        StringBuffer sb = new StringBuffer(s);
                        String temp2 = sb.reverse().toString();//调用StringBuffer自己的字符串反转方法

                        bus.write(temp2);
                        bus.newLine(); //写入一个行分隔符。
                        bus.flush();
               }
                buf.close();
                bus.close();
        }
       
}
回复 使用道具 举报
张周飞 发表于 2015-1-7 15:19
我已解决:
代码如下:
package vom.vice.start;

倒序哦~~~送几个黑马币行不,筹够10个技术分,下次还你
回复 使用道具 举报
我来学习哈
回复 使用道具 举报
我来学习哈
回复 使用道具 举报
学习了,谢谢分享
回复 使用道具 举报
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class StringTest {
        public static void main(String[] args) {

                ArrayList<String> list = new ArrayList<String>();
                System.out.println("开始输入,以end结束:");
                while (true) {
                        Scanner sc = new Scanner(System.in);
                        String line = sc.nextLine();
                        if ("end".equals(line)) {
                                System.out.println("end!结束!");
                                break;
                        }
                        list.add(line);
                }
                Collections.sort(list, new myComparator_StringTest());
                System.out.println(list);
        }

}

class myComparator_StringTest implements Comparator<String> {
        @Override
        public int compare(String s1, String s2) {
                int num = s2.compareTo(s1);
                return num;
        }
}
回复 使用道具 举报
步骤:
1> 将输入的字符串存入ArrayList
2> 自定义比较器
            由于是字典顺序倒序打印,所以只需要将compare的返回值与默认字符串的默认比较方法取反就可以。
             int num = s2.compareTo(s1);或者 int num = -s1.compareTo(s2);
3> 使用Collections工具排序---自定义比较器排序
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马