簡體   English   中英

從Java文件中拆分字符串?

[英]Splitting strings from a file in java?

文件的字符串:

    insert ignominious
    insert elephant
    insert judicious
    insert bastion
    insert fastidious
    insert generous
    insert hilarious
    insert astute
    insert degenerate
    insert courageous
    traverse
    remove judicious
    remove ignominious     

我的代碼在一行上有兩個單詞時拆分字符串,但是當它進入“遍歷”時,由於它只是一個單詞,因此會出現OutOfBounds錯誤。 我不確定您是否需要檢查該行上是否只有一個單詞才能不拆分以及如何進行拆分。

BufferedReader in = new BufferedReader(new FileReader("file.txt"));
String str;

while ((str = in.readLine()) != null) {
    String[] strArr = str.split(" ");
    if(strArr[1]!=null)
        System.out.println(strArr[0] + ", "+strArr[1]);
    else
        System.out.println(strArr[0]);
}
in.close();

正如@markspace所說,您應該只檢查數組的長度。

 while ((str = in.readLine()) != null) {
     String[] strArr = str.split(" ");
        if(strArr.length > 1)
             System.out.println(strArr[0] + ", "+strArr[1]);
        else
            System.out.println(strArr[0]);
}

如果僅打印這樣的名稱,則可以執行以下操作:

while ((str = in.readLine()) != null) {
    String[] strArr = str.split(" ");
    System.out.println(String.join(", ", strArr));
}

我認為這是解決更大問題的第一步。 很好的是,您開始通過實現僅讀取文件並打印出您解析的命令的代碼來解決此問題。 像這樣將較大的問題分解成較小的問題對於計算機程序員來說是一項重要技能。 但是,在這種情況下,您的簡化將忽略有關輸入的詳細信息:某些命令帶有參數,而有些則沒有。

一種解決方案是在嘗試使用strArr[1]之前檢查存儲在strArr[0]的命令。 此命令確定是否需要任何其他參數。 例如,如果strArr[0]"insert" ,那么您知道會有一個參數。 但是,如果它是"traverse" ,則不應有任何參數,並且您不應嘗試訪問strArr[1]因為您知道它不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM