我试图在java中创建一个使用扫描程序读取List String的方法。我希望程序使用描绘符" // 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);
}
}
答案 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;修改你的参数,并没有副作用的方法)