Using an array list of names, I am trying to split the first names and surnames using a for loop. The code works but when splitting the names using a substring it goes from 0-x (x being the space between the names) but it reads from 0 each time and adds each name multiple times until it completes. How can I run it from the next element each time to skip the name previously split and added?
public static void main(String[] args) { String [] name_list = {"lee momo", "michael jesus", "kim danger", "dean habbo"}; ArrayList<String> firstNames = new ArrayList<String>(); ArrayList<String> surnames = new ArrayList<String>(); for(int i = 0; i < name_list.length; i++){ int x = name_list[i].indexOf(" "); String firstName = name_list[i].substring(0, x); firstNames.add(firstName); for(int j = 0; j < name_list.length; j++){ int y = name_list[i].indexOf(" "); String surname = name_list[i].substring(x); surnames.add(surname); } System.out.println(firstNames.toString()); System.out.println(surnames.toString()); } }
For example the output of first names is like this: lee lee, michael lee, michael, kim lee, michael, kim, dean
Advertisement
Answer
Fix
You need only one loop, to extract both
String[] name_list = {"lee momo", "michael jesus", "kim danger", "dean habbo"}; ArrayList<String> firstNames = new ArrayList<>(); ArrayList<String> surnames = new ArrayList<>(); for (int i = 0; i < name_list.length; i++) { int x = name_list[i].indexOf(" "); String firstName = name_list[i].substring(0, x); firstNames.add(firstName); String surname = name_list[i].substring(x + 1); surnames.add(surname); } System.out.println(firstNames); // [lee, michael, kim, dean] System.out.println(surnames); // [momo, jesus, danger, habbo]
Improve
- use
String.split()
- use a for each loop
for (String s : name_list) { String[] parts = s.split("\s+"); firstNames.add(parts[0]); surnames.add(parts[1]); }