使用名称数组列表,我尝试使用 for 循环拆分名字和姓氏。该代码有效,但是当使用子字符串拆分名称时,它从 0-x(x 是名称之间的空格)开始,但它每次从 0 读取并多次添加每个名称直到完成。如何每次从下一个元素运行它以跳过先前拆分和添加的名称?
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());
}
}
例如名字的输出是这样的: 李 李,迈克尔 李、迈克尔、金 李、迈克尔、金、院长
答案 0 :(得分:0)
您只需要一个循环,即可提取两者
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]
String.split()
for (String s : name_list) {
String[] parts = s.split("\\s+");
firstNames.add(parts[0]);
surnames.add(parts[1]);
}
答案 1 :(得分:0)
for(int i = 0; i < name_list.length; i++){
String[] split_name = name_list[i].split(" ");
int x = name_list[i].indexOf(" ");
String firstName = name_list[i].substring(0,x);
firstNames.add(firstName);
//indexOf would be useful when surname has space separated more tahn
// one owrd
String surname = name_list[i].substring(x+1);
surnames.add(surname);
}
for(int i=0; i<firstNames.size(); ++i){
System.out.println(firstNames.get(i));
System.out.println(surnames.get(i));
}