2015-10-06 42 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)将成为你的名字,第二个数组是你的姓名和姓氏的最后一个 –