如何扫描列表<String>



我正在尝试在java中创建一个使用扫描仪读取列表字符串的方法。我希望程序使用描述符"//s"逐字划分数组。我已经通过文本文件中的人名获取了每个数组,我只是想进一步划分数组,以便我可以按信息对它们进行排序(例如,如果他们有 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);
}
}

您可以为列表中的每个字符串创建一个扫描器,然后循环访问该字符串

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

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

除此之外,array.set不起作用,因为您为每个单独的a值中的多个单词分配相同的i值......这将导致仅将扫描字符串中的最后一个值分配给列表的该索引

如果您尝试将列表中的所有单词拆分为一个新列表,那么您实际上需要创建值并将其附加到单独的列表对象(不要修改参数,也没有有副作用的方法(

相关内容

最新更新