第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

java - 遇到空字符串時,BufferedReader readLine 停止讀取

java - 遇到空字符串時,BufferedReader readLine 停止讀取

嗶嗶one 2022-06-15 16:00:51
我正在使用 BufferedReader 逐行讀取文本文件。然后我使用一種方法來規(guī)范化每一行文本。但是我的規(guī)范化方法有問題,在調(diào)用它之后,BufferedReader 對象停止讀取文件。有人可以幫我弄這個嗎。這是我的代碼:public static void main(String[] args) {    String string = "";    try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {        String line;        while ((line = br.readLine()) != null) {            string += normalize(line);        }    } catch (Exception e) {    }    System.out.println(string);}public static String normalize(String string) {    StringBuilder text = new StringBuilder(string.trim());    for(int i = 0; i < text.length(); i++) {        if(text.charAt(i) == ' ') {            removeWhiteSpaces(i + 1, text);        }    }    if(text.charAt(text.length() - 1) != '.') {        text.append('.');    }    text.append("\n");    return text.toString();}public static void removeWhiteSpaces(int index, StringBuilder text) {        int j = index;        while(text.charAt(j) == ' ') {            text.deleteCharAt(j);        }    }這是我使用的文本文件:abc . asd. dasd.
查看完整描述

5 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗 獲得超7個贊

我認(rèn)為你的 . 有問題removeWhiteSpaces(i + 1, text);,如果你在字符串過程中有問題,讀者將無法閱讀下一行。


你不檢查空字符串,你打電話text.charAt(text.length()-1),這也是一個問題。


打印異常,更改您的 catch 塊以寫出異常:


} catch (Exception e) {

    e.printStackTrace();

}

原因是在你的while(text.charAt(j) == ' ') {,你不檢查StringBuilder的長度,但你刪除它......


查看完整回答
反對 回復(fù) 2022-06-15
?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊

問題不在于您的代碼,而在于對readLine()方法的理解。在文檔中指出:

讀取一行文本。一行被認(rèn)為是由換行符 ('\n')、回車符 ('\r') 或緊跟換行符的回車符中的任何一個終止的。

https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()

這意味著如果該方法找到一個空行,它將停止讀取并返回null

@tijn167 提出的代碼將使用BufferedReader. 如果您不克制BufferedReader使用ScanReader@Abhishek Soni 的建議。

此外,您的方法removeWhiteSpaces()是檢查空格,而空行不是空格,而是進(jìn)位返回\r或換行\n或兩者兼而有之。所以你的條件text.charAt(j) == ' '永遠(yuǎn)不會滿足。


查看完整回答
反對 回復(fù) 2022-06-15
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗 獲得超6個贊

歸一化功能導(dǎo)致了這種情況。對其進(jìn)行以下調(diào)整應(yīng)該可以解決此問題:


public static String normalize(String string) {


        if(string.length() < 1) {

            return "";

        }

        StringBuilder text = new StringBuilder(string.trim());

        if(text.length() < 1){

            return "";

        }



        for(int i = 0; i < text.length(); i++) {

            if(text.charAt(i) == ' ') {

                removeWhiteSpaces(i + 1, text);

            }

        }


        if(text.charAt(text.length() - 1) != '.') {

            text.append('.');

        }


        text.append("\n");

        return text.toString();

    }


查看完整回答
反對 回復(fù) 2022-06-15
?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗 獲得超4個贊

嘗試這個:


   while ((line = br.readLine()) != null) {

        if(line.trim().isEmpty()) {

            continue;

        }

         string += normalize(line);

      }


查看完整回答
反對 回復(fù) 2022-06-15
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

試試 ScanReader


 Scanner scan = new Scanner(is);

 int rowCount = 0;

 while (scan.hasNextLine()) {

             String temp = scan.nextLine();


             if(temp.trim().length()==0){

                 continue;

             }

}

//其余的邏輯


查看完整回答
反對 回復(fù) 2022-06-15
  • 5 回答
  • 0 關(guān)注
  • 461 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號