为了账号安全,请及时绑定邮箱和手机立即绑定

java - 以不区分大小写的顺序输出文本

java - 以不区分大小写的顺序输出文本

温温酱 2023-08-16 16:15:47
所以我是java新手,目前正在学习如何读取文本文件。我正在尝试构建一个程序,一次从用户那里读取一行输入,当我按 ctrl + z 时,它应该以不区分大小写的排序顺序输出所有行。我对如何使用集合有点困惑,我尝试遵循我在网上找到的类似示例。但是,当我运行程序时,它只输出我输入的任何内容,而不对任何内容进行排序。我究竟做错了什么?public static void doIt(BufferedReader r, PrintWriter w) throws IOException {    List<String> listStrings = new ArrayList<>();    String line;    while((line = r.readLine()) != null) {        listStrings.add(line);    }    Collections.sort(listStrings);    Collections.sort(listStrings, String.CASE_INSENSITIVE_ORDER);    Collections.sort(listStrings, Collections.reverseOrder());    Collections.sort(listStrings, String.CASE_INSENSITIVE_ORDER);//  Collections.reverse(listStrings);    for (String text: listStrings) {        w.println(text);    }}
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您的任何Collections._____()调用都不会打印任何内容。它们只是对底层集合(listStrings)进行操作。因此,在每个步骤之后,您期望最终得到的结果如下:


//listStrings

Collections.sort(listStrings);

//listStrings sorted alphabetically, case sensitive

Collections.sort(listStrings, String.CASE_INSENSITIVE_ORDER);

//listStrings sorted alphabetically, case insensitive

Collections.sort(listStrings, Collections.reverseOrder());

//listStrings sorted alphabetically in reverse order, case insensitive

Collections.sort(listStrings, String.CASE_INSENSITIVE_ORDER);

//listStrings sorted alphabetically, case insensitive

Collections.reverse(listStrings);

//listStrings sorted alphabetically in reverse order, case insensitive

最后,在对 进行所有这些更改后listStrings,您尝试打印该集合。您在这里遇到的问题是,您实际上并没有刷新输出流,这可能是缓冲的。因此,不会打印任何内容。我重写了您的代码,使其具有完全相同的效果listStrings,并打印输出,如下所示:


public static void doIt(BufferedReader r, PrintWriter w) throws IOException

{

    List<String> listStrings = new ArrayList<>();

    String line;

    while((line = r.readLine()) != null)

    {

        listStrings.add(line);

    }


    Collections.sort(listStrings, String.CASE_INSENSITIVE_ORDER.reversed());


    for(String text : listStrings)

    {

        w.println(text);

    }

    w.flush();

}

我从我的 main 方法中调用它,如下所示:


public static void main(String[] args) throws Exception

{

    doIt(new BufferedReader(new InputStreamReader(System.in)), new PrintWriter(System.out));

}

这是最终的效果:

输入:


ABCD

bcde

fegh

ijkl

输出:


ijkl

fegh

bcde

ABCD


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号