如何从文本导入不包含文本文件中某些字符的数组

时间:2019-02-16 23:19:21

标签: java arrays text import

我已经为这项作业苦苦挣扎了几天。我能够导入另一个仅包含姓氏的文本文件,但是对于男孩名字,每个名字之前都有一个数字,一个句点和一个空格。

每个名称后面还有一个选项卡。大多数情况下,女孩的名字只是用空格分开,但是在某些名字之间随机有一个制表符。男孩和女孩的名字很难用新行分开,而且主要是长行。

这是男孩文本文件上的名称的样子

(没有出现标签,所以我在应该有标签的地方加上了“ \ t”)

  1. 利亚姆\ t 2.诺亚\ t 3.威廉\ t 4.詹姆斯\ t 5.洛根\ t 6.本杰明\ t 7.梅森\ t 8.以利亚\ t

这是女孩文本文件上的名称

(没有出现标签,所以我在应该有标签的地方加上了“ \ t”)

艾玛·奥利维亚\ t艾娃·伊莎贝拉·索菲亚\ t米娅·夏洛特\ t艾米莉亚\ t伊夫琳·阿比盖尔·哈珀·艾米丽\ t伊丽莎白\ t艾利

public static void main(String[] args) throws IOException {

  FileReader fr = new 
      FileReader("C:\\Users\\siegh\\Desktop\\lastNames0219.txt");
  FileReader fr1 = new 
  FileReader("C:\\Users\\siegh\\Desktop\\boyNames0219.txt");
  FileReader fr2 = new 
  FileReader("C:\\Users\\siegh\\Desktop\\girlsNames0219.txt");
  BufferedReader br = new BufferedReader(fr);
  BufferedReader br1 = new BufferedReader(fr1);
  BufferedReader br2 = new BufferedReader(fr2);

  String line = "";

  /*String[] tokens = str.split("\t")
   *String[] tokens = str.split("\t");
   *String[] tokens = str.split("\n");
   *String[] tokens = str.split("[\t, \n]");

    */
  ArrayList<Names> lastNames = new ArrayList<>();
  while ((line = br.readLine()) != null) {
      String[] tokens = line.split(" ");
      Names n = new Names();
      n.lastName = tokens[0];
      lastNames.add(n);
  }

  ArrayList<Names> boysNames = new ArrayList<>();
  while ((line = br1.read()-*) != null) {
      String[] tokens = line.split("[,\t,.]+");
      Names bn = new Names();
      bn.firstNameBoy = tokens[0];
      boysNames.add(bn);
  }

  ArrayList<Names> girlsNames = new ArrayList<>();
  while ((line = br2.readLine()) != null) {
      String[] tokens = line.split("[., ]");
      Names gn = new Names();
      gn.firstNameGirl = tokens[0];
      girlsNames.add(gn);
  }

  StringBuilder javaText = new StringBuilder();
  javaText.append("String[] firstNameBoy = { ");
  for (Names bn: boysNames) {
      javaText.append('\"' + bn.firstNameBoy.replaceFirst("", "") + 
   "\", ");
  }

  javaText.append("};");

  StringBuilder javaText1 = new StringBuilder();
  javaText1.append("String[] firstNameGirl = { ");
  for (Names gn: girlsNames) {
      javaText1.append('\"' + gn.firstNameGirl.replaceFirst("", "") + 
   "\", ");
  }

  javaText1.append("};");

  StringBuilder javaText2 = new StringBuilder();
  javaText2.append("String[] lastName = {");
  for (Names n: lastNames) {
      javaText2.append('\"' + n.lastName.replaceFirst(" ", "") + "\", 
  ");
  }
  javaText2.append("};");

  System.out.println(javaText);
       //      System.out.println();
      //      System.out.println();
      //      System.out.println(javaText1);
     //      System.out.println(); 
       //      System.out.println();
       //      System.out.println(javaText2);
         }
            }

最终目标是拥有1200个名称的数组。 600个男孩名字和600个女孩名字,每个名字随机附有姓氏。

这是我运行代码时最终得到的。

String [] firstNameBoy = {“ 1”,};

0 个答案:

没有答案