如何扫描List <string>

时间:2018-06-12 00:17:08

标签: java

我试图在java中创建一个使用扫描程序读取List String的方法。我希望程序使用描绘符&#34; // s&#34;逐字分割数组。我已经通过文本文件中的人的名字得到了每个数组,我只是想进一步划分数组,这样我就可以通过那里的信息对它们进行排序(例如,如果他们有女性的f我可以打电话使用arrayList.get(index)的数组的特定部分,并按性别排序)这是我的代码:

很抱歉不清楚,这是我的完整代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;



public class Filereader {

public static void replaceSlash(List<String> array) {



    for (int i = 0; i < array.size(); i++)
      {
        if (array.get(i).contains("-")) 
        {
            array.set(i, array.get(i).replace("-", "/"));
        }
      }

}

public static void split( List<String> array ) {

    Scanner scanner = new Scanner().useDelimiter("\\s");
    for (int i= 0; i < array.size(); i++) {
        while (scanner.hasNext()) {
            array.set(i, scanner.next());
        }

    }


}

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub


    System.out.println("Please type the name of the file you wish to sort: ");
    //get the name of the file
    Scanner scanner = new Scanner(System.in);
    File fileName = new File(scanner.nextLine());

    scanner = new Scanner(fileName).useDelimiter("\\s");
    List<String> annaK = new ArrayList<String>();
    List<String> martinaH = new ArrayList<String>();
    List<String> monicaS = new ArrayList<String>();


    while (scanner.hasNextLine()) {

        annaK.add(scanner.nextLine());
        martinaH.add(scanner.nextLine());
        monicaS.add(scanner.nextLine());


    }



    replaceSlash(annaK);
    replaceSlash(martinaH);
    replaceSlash(monicaS);

    split(annaK);



    System.out.println(annaK);
    System.out.println(martinaH);
    System.out.println(monicaS);

}
}

1 个答案:

答案 0 :(得分:1)

您可以为列表中的每个字符串创建一个扫描程序,然后遍历该

for (String a : array) {
     Scanner scanner = new Scanner(a).useDelimiter("\\s");
    while (scanner.hasNext()) {
        System.out.println(scanner.next());
    }

}

但是,a.split()StringTokenizer比扫描仪更有意义

除此之外,array.set无法正常工作,因为您为每个i值中的多个字分配了相同的a值...这将导致仅在要扫描的字符串中的最后一个值中分配给列表的索引

如果您尝试将列表中的所有字词拆分为列表,那么您实际上需要创建值并将其附加到单独的列表对象(don&# 39;修改你的参数,并没有副作用的方法)