2

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

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();
}
4

1 回答 1

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());
 }
于 2012-12-09T06:47:02.533 回答