Первый ответ охватывает это.
Я предполагаю, что где-то внизу вы можете решить сохранить вашу информацию в другом классе / структуре. В этом случае вы, вероятно, не захотите, чтобы результаты передавались в массив из метода split ().
Вы не просили об этом, но мне скучно, так что вот пример, надеюсь, это полезно.
Это может быть класс, который вы пишете для представления одного человека:
class Person {
public String firstName;
public String lastName;
public int id;
public int age;
public Person(String firstName, String lastName, int id, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.id = id;
this.age = age;
}
// Add 'get' and 'set' method if you want to make the attributes private rather than public.
}
Тогда версия кода синтаксического анализа, которую вы первоначально разместили, будет выглядеть примерно так:
(Это сохраняет их в LinkedList, вы можете использовать что-то еще, например, Hashtable и т. Д.)
try
{
String ruta="entrada.al";
BufferedReader reader = new BufferedReader(new FileReader(ruta));
LinkedList<Person> list = new LinkedList<Person>();
String line = null;
while ((line=reader.readLine())!=null)
{
if (!(line.equals("%")))
{
StringTokenizer st = new StringTokenizer(line, "*");
if (st.countTokens() == 4)
list.add(new Person(st.nextToken(), st.nextToken(), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken)));
else
// whatever you want to do to account for an invalid entry
// in your file. (not 4 '*' delimiters on a line). Or you
// could write the 'if' clause differently to account for it
}
}
reader.close();
}