2015-10-06 3 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: Эрвин Jacob A. Watson Джон Джейсон Б. Watsan Брайан Б. Рибен Ясуо Ривен D. Teemo Ожидаемый результат: Имя: Erwin Jacob MI: А. Фамилия: Watson Имя: Брайан MI: B. Фамилия: Рибен Имя: Erwin Jacob MI: А. Фамилия: Watson Имя: Ясуо Ривен M.I: D. Фамилия: Teemo –

ответ

0

Вы можете использовать метод split() для String. Пересмотренный код будет выглядеть следующим образом

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(). Если ваш текстовый файл выглядит так: «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

ну, я думаю, вы хотели спросить me: D метод Strin.split() разделяет вашу строку в отдельных строковых массивах «1 2 3 4» -> array [0] = 1, array [1] = 2 ... В вашем случае первый массив (по индексу 0) будет вашим первым именем, вторым массивом будет ваше начальное и последнее ваше семейное имя. –

Смежные вопросы