亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號