Это действительно зависит, если у вас есть строгое согласие, что входные данные всегда будут иметь тот же формат, что и в вашем примере, тогда вы можете просто использовать строку .split(" ")
и прочитать все числа для каждой строки.
Пример :
// or any other input, eg: List, BufferedReader, etc
String[] lines = new String[] {
"Mary market 8 theatre 80 end",
"John books 45 end"
};
for (String line : lines) {
String[] raw = line.split(" ");
String name = raw[0];
for (int i = 1; i < raw.length; i += 2) {
if (raw[i].equals("end")) break;
String expenseName = raw[i];
int cost = Integer.parseInt(raw[i+1]);
...
}
}
Но если нет, тогда, вероятно, лучше использовать RegExp
и найти все цифры в каждой строке.
Пример :
// or any other input, eg: List, BufferedReader, etc
String[] lines = new String[] {
"Mary market 8 theatre 80 end",
"John books 45 end"
};
Pattern p = Pattern.compile("\\d+");
for (String line : lines) {
Matcher m = p.matcher(line);
while(m.find()) {
int cost = Integer.parseInt(m.group());
...
}
}