Reputation: 183
My code looks like this right now (see below for updated code):
BufferedReader infile = new BufferedReader(new FileReader("file.txt"));
String line;
int i = 0;
while ((line = infile.readLine()) != null) {
String first, second, last;
//Split line into first, second and last (word)
//Do something with words (no help needed)
i++;
}
Here is the full file.txt:
Allegrettho Albert 0111-27543 Brio Britta 0113-45771 Cresendo Crister 0111-27440 Dacapo Dan 0111-90519 Dolce Dolly 0116-31418 Espressivo Eskil 0116-19042 Fortissimo Folke 0118-37547 Galanto Gunnel 0112-61805 Glissando Gloria 0112-43918 Grazioso Grace 0112-43509 Hysterico Hilding 0119-71296 Interludio Inga 0116-22709 Jubilato Johan 0111-47678 Kverulando Kajsa 0119-34995 Legato Lasse 0116-26995 Majestoso Maja 0116-80308 Marcato Maria 0113-25788 Molto Maja 0117-91490 Nontroppo Maistro 0119-12663 Obligato Osvald 0112-75541 Parlando Palle 0112-84460 Piano Pia 0111-10729 Portato Putte 0112-61412 Presto Pelle 0113-54895 Ritardando Rita 0117-20295 Staccato Stina 0112-12107 Subito Sune 0111-37574 Tempo Kalle 0114-95968 Unisono Uno 0113-16714 Virtuoso Vilhelm 0114-10931 Xelerando Axel 0113-89124
New code as @Pshemo suggested:
public String load() {
try {
Scanner scanner = new Scanner(new File("reg.txt"));
while (scanner.hasNextLine()) {
String firstname = scanner.next();
String lastname = scanner.next();
String number = scanner.next();
list.add(new Entry(firstname, lastname, number));
}
msg = "The file reg.txt has been opened";
return msg;
} catch (NumberFormatException ne) {
msg = ("Can't find reg.txt");
return msg;
} catch (IOException ie) {
msg = ("Can't find reg.txt");
return msg;
}
}
I receive multiple errors, what's wrong?
Upvotes: 0
Views: 242
Reputation: 124265
Assuming that each line always contains exactly three words instead of split you can simply use Scanner
s method next
three times for each line.
Scanner scanner = new Scanner(new File("file.txt"));
int i = 0;
while (scanner.hasNextLine()) {
String first = scanner.next();
String second = scanner.next();
String last = scanner.next();
//System.out.println(first+": "+second+": "+last);
i++;
}
Upvotes: 1
Reputation: 3110
String []parts=line.split("\\s+");
System.out.println(parts[0]);
System.out.println(parts[1]);
System.out.println(parts[parts.length-1]);
Upvotes: 0
Reputation: 34166
Assuming the line has 3+ words, use the split(delimiter)
method:
String line = ...;
String[] parts = line.split("\\s+"); // Assuming words are separated by whitespaces, use another if required
then you can access to the first, second and last respectively:
String first = parts[0];
String second = parts[1];
String last = parts[parts.length() - 1];
Remember that indexes starts with 0.
Upvotes: 0
Reputation: 36304
line.split("\\s+"); // don't use " ". use "\\s+" for more than one whitespace
Upvotes: 0