如何从文本文件存储到数组行标记?

时间:2012-12-09 06:40:39

标签: java

我有一个包含以下内容的文本文件:

First Name : Javier Last Name : Smith E-mail : smith@.com Password: jsmith Date of Birth: Jan 1, 1987

First Name : Jade Last Name : Tux E-mail : nicholson@.com Password: jade123 Date of Birth: Jan 1, 1954

First Name : Bruce Last Name : Porto E-mail : bruce_porto@.com Password: br11 Date of Birth: Feb 25, 1946

我想在第一行上获得字符串Javier,Smith,smith @ .com,jsmith等等,并将这些字符串存储在person类型的字符串(字符串,字符串,字符串,字符串)中并执行相同的操作每一行。

到目前为止,这是我的代码:

try
{
    searchUser = new Scanner(new FileInputStream("src/users.txt")).useDelimiter(":");
    String storeFirst = "", storeLast = "", storeEmail = "", storePassword = "";
    usersArray = new ArrayList<Person>();
    String line = null;

    while(searchUser.hasNextLine())
    {
        line = searchUser.nextLine();
            storeFirst = searchUser.next();
        storeLast = searchUser.next();
        storeEmail = searchUser.next();
        storePassword = searchUser.next();
        line = searchUser.nextLine();

        usersArray.add(new Person(storeFirst, storeLast, storeEmail, storePassword));

        for(Person ae : usersArray)
        {
            System.out.println(ae.toString());
        }
        System.out.println(storeFirst);
        System.out.println(storeLast);
        System.out.println(storeEmail);
        System.out.println(storePassword);

    }
    searchUser.close();
}

1 个答案:

答案 0 :(得分:1)

更改while循环以首先读取并填充数组,然后将打印循环设置为:

 while(searchUser.hasNextLine()){
  //read the tokens first ignoring tag tokens
  searchUser.next();//ignore "First Name"
  storeFirst = searchUser.next().split(" ")[0];//split the 3 words and take 1st
  storeLast = searchUser.next().split(" ")[0];//split the 2 words and take 1st
  storeEmail = searchUser.next().split(" ")[0];//split the 2 words and take 1st
  storePassword = searchUser.next().split(" ")[0];//split the 2 words and take 1st
  //read and ignore remaining text including the new line character in the end
  searchUser.nextLine();

  Person person = new Person(storeFirst, storeLast, storeEmail, storePassword);
  usersArray.add(person);
}

现在打印代码为:

 for(Person ae : usersArray){
   System.out.println(ae.toString());
 }