给定反向名称

时间:2019-03-13 21:16:46

标签: java

我希望颠倒在给我的列表中找到的名称(编辑:从网站的网页抓取中给我的列表)再次不是功课

列表的小样本:

Baynes, Aron
Bazemore, Kent
Beal, Bradley
Beasley, Malik
Beasley, Michael
Belinelli, Marco
Bell, Jordan
Bembry, DeAndre'

我需要它们作为Aron Bayne(或Aron,Baynes

奇怪的是,人们认为这是作业问题。这不是。我在编写的程序中使用NBA球员姓名。我无法发布代码,因为所使用的代码长1000行。与我的尝试相比,我只需要能够快速扭转名称顺序的功能

我尝试过的操作:for loops使用,作为索引,然后使用子字符串来回工作。对于上面给出的字符串列表,此方法效果不佳

1 个答案:

答案 0 :(得分:1)

如果文件中包含所有名称(例如names.txt

Baynes, Aron
Bazemore, Kent
Beal, Bradley
Beasley, Malik
Beasley, Michael
Belinelli, Marco
Bell, Jordan
Bembry, DeAndre'

您可以:

  • 阅读行
  • 分割线(使用分隔符)
  • 反向显示
import java.io.BufferedReader;
import java.io.FileReader;

public class Main {

    public static void main(String[] args) {

        // File name
        String fileName = "names.txt";
        String separator = ", ";

        String line;

        try (FileReader fileReader = new FileReader(fileName);
             BufferedReader bufferedReader = new BufferedReader(fileReader)) {

            while ((line = bufferedReader.readLine()) != null) {
                String[] elements = line.split(separator);

                if (elements.length == 2) {
                    System.out.printf("%s %s\n", elements[1], elements[0]);
                } else {
                    System.out.println("Wrong line: " + line);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

或使用List代替文件:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<String> list = new ArrayList<>(Arrays.asList(
                "Baynes, Aron",
                "Bazemore, Kent",
                "Beal, Bradley",
                "Beasley, Malik",
                "Beasley, Michael",
                "Belinelli, Marco",
                "Bell, Jordan",
                "Bembry, DeAndre'"
        ));

        String separator = ", ";

        // Using loop
        for (String person : list) {
            String[] elements = person.split(separator);

            if (elements.length == 2) {
                System.out.printf("%s %s\n", elements[1], elements[0]);
            } else {
                System.out.println("Wrong line: " + person);
            }
        }

        // Using stream
        list.forEach(person -> {
            String[] elements = person.split(separator);

            if (elements.length == 2) {
                System.out.printf("%s %s\n", elements[1], elements[0]);
            } else {
                System.out.println("Wrong line: " + person);
            }
        });
    }
}