2015-10-06 40 views
0

我需要修改代碼的幫助。鑑於在記事本上寫的是名字中間名和姓。創建的代碼是這樣的:在修改代碼時需要幫助:Java FileIO

import java.io.*; 
public class Names{ 
public static void main (String args [])throws IOException{ 

    BufferedReader f = new BufferedReader(new FileReader("Names.txt")); 
    String a = f.toString(); 
    String name[] = new String[a.length()]; 
    String n = f.readLine(); 

    int x = 0; 
    while (n!= null){ 
     name[x] = n; 
     String names[] = new String[a.length()]; 

     for (int z = 0; z< name[x].length()-1; z++){ 
      if (name[x].charAt(z) == '.'){ 
      names[0] = name[x].substring(0,z-2); 
      for (int bry = z-2; bry < name[x].length()-1; bry++){ 
       if (name[x].charAt(bry) == ' '){ 
        names[1] = name[x].substring(z-2,bry); 
        for (int bry2 = bry; bry2<name[x].length()-1; bry2++){ 
         if (name[x].charAt(bry2) == ' '){ 
          names[2] = name[x].substring(bry2,  
    name[x].length()); 
         } 
        } 
       } 
      } 
     } 
     } 
     System.out.println("First Name: " + names[0]); 
     System.out.println("M.I: " + names[1]); 
     System.out.println("Family Name: " + names[2] + "\n"); 
     n = f.readLine(); 
     x++; 

    } 

} 
} 

我想顯示中間名和最後一個名。感謝您的幫助。

+0

問題是什麼以及第一個,中間和最後一個名稱之間的分隔符是什麼? – YoungHobbit

+0

什麼是當前輸出以及來自'names.txt'文件的輸入是什麼? – Sybren

+0

@Sybren:比方說,這是分別對names.txt中輸入名稱: 歐文雅各布A.沃森 約翰·傑森B. WATSAN 布萊恩B. Riben 康夫裏文D.提莫 的預期輸出: 名字:歐文雅各布 MI:A. 姓:沃森 名字:布萊恩 MI:B. 姓:Riben 名字:歐文雅各布 MI:A. 姓:沃森 名字:康夫裏文 M.I:D. 姓:提莫 –

回答

0

您可以使用String的split()方法。修改後的代碼看起來像這樣

BufferedReader f = new BufferedReader(new FileReader("Names.txt")); 
    String n = f.readLine(); 
    while (n != null) 
    { 
     String[] names = n.split("\\s"); 
     System.out.println("First Name: " + names[0]); 
     System.out.println("M.I: " + names[1]); 
     System.out.println("Family Name: " + names[2] + "\n"); 
     n = f.readLine(); 
    } 
0

我會用String.split()來做。如果你的Textfile如下所示:「Tom TW Wellbrock」我將在空白處分隔輸入字符串。如果您的屬性用逗號分隔,請將其拆分:

BufferedReader fileReader = new BufferedReader(new FileReader("Names.txt")); 
    String input = fileReader.readLine(); //please choose other names for you variables they are confusing 

    while (input != null){ 

     String[] parts = input.split(" "); //you can seperate with any Symbol 
     System.out.println(parts[0]) //your first name 
     System.out.println(parts[1]) //your initial 
     System.out.println(parts[2]) //your last name 
     input = fileReader.readLine(); 
    } 
+0

@Rahul Yadav我將在哪裏獲得索引號?對於名稱[0],[1]和[2] –

+0

@BlackHusky,因爲你已經使用了字符串的溢出方法,它會返回大小爲3的數組,因此基於零的索引,所以0,1,2 –

+0

我想你想問一下我:D方法Strin.split()分離你的字符串在單獨的字符串數組「1 2 3 4」 - >數組[1] = 1,數組[1] = 2 ...在您的情況下,第一個數組(在索引0)將成爲你的名字,第二個數組是你的姓名和姓氏的最後一個 –