【问题标题】:How can I split string elements of an array and add them to another?如何拆分数组的字符串元素并将它们添加到另一个?
【发布时间】:2021-09-10 06:34:43
【问题描述】:

使用名称的数组列表,我尝试使用 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());

    }
}

例如,名字的输出是这样的: 李 李,迈克尔 李、迈克尔、金 李、迈克尔、金、院长

【问题讨论】:

    标签: java arrays for-loop substring


    【解决方案1】:

    修复

    你只需要一个循环来提取两个

    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]);
    }
    

    【讨论】:

    • 所以添加的重复名称是因为第二个 for 循环,而不是因为子字符串设置为 0-x?
    • @Rednuam 是的,第二次加姓氏一次又一次
    【解决方案2】:
    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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多