簡體   English   中英

Java:讀取文件並將一行拆分為單獨的字符串

[英]Java: Read a File & Split a line into separate string

我想讀取一個文件,file.txt,其中包含這樣的單詞對......

yaniv:bobo

在閱讀完這個 file.txt 之后,我想拆分這個文本並將每個單詞放入變量中,並嘗試像這樣比較它們:

Scanner scan = new Scanner(new FileReader(file));
while(scan.hasNextLine()) {
           
           String descritpion = scan.nextLine();
           
           System.out.println("line" +descritpion);  
          
           String []temp = descritpion.split(":");   
          
           String name = temp[0];   
           String surname = temp[1];
      
          System.out.println("name : "+ name);   
          System.out.println("surname : "+ surname);
      
             
 }
if(surname == "bobo") {
                System.out.println("date set from file ");
                GUI_view.getDateChooser().setDate( new SimpleDateFormat("yyyy-MM-dd").parse(part1) );
                }   

但我得到這個錯誤?? 為什么?? 怎么了??

Exception in thread "AWT-EventQueue-0" 
java.lang.ArrayIndexOutOfBoundsException: 1
    at controller.TaskController.openFile(TaskController.java:213)
    at controller.TaskController.lambda$11(TaskController.java:110)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

不知道這是否會解決您的問題,但不是

if(surname == "bobo") {

利用:

if(surname.contains("bobo")) {

surname == "bobo" 將返回 false 作為比較 surname 的地址

當我使用模擬文件編譯和運行它時,您的代碼似乎很好。 也許問題出在您的文件中。 請提供您的文件以供進一步檢查。

另請注意,您正在使用==比較字符串。 始終使用equalsequalsIgnoreCase方法比較字符串。

喜歡:

if(surname.equals("bobo") {}

檢查您的文件如何結束。 Scanner足夠聰明,可以從最后扔掉一個換行符。 但是,如果之后有任何內容(如空格或另一個換行符),那將是一個要讀取的新行。
在這種情況下

String descritpion = scan.nextLine();

將讀取一個空字符串,然后

String []temp = descritpion.split(":");

將其拆分為一個單項數組,其中

String name = temp[0];

包含整個字符串(為空或包含單個空格或其他內容),這就是它的傳遞方式

String surname = temp[1];

不存在,這就是它拋出異常的原因。
但是,在這種情況下,屏幕上應該會在異常之前出現line 請參閱此處的測試(使用字符串而不是文件): https://ideone.com/ixo0kd - 無換行符和單行換行符情況正常,換行符后的空格和雙行符-break 案例拋出異常,但之前顯示一個空line

暫無
暫無

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

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