我正在编写一个方法,该方法接收一个文件并返回一个数组列表,其中包含文件中的每个其他单词。这些文件可以包含多行。
例如,如果我扫描文件,它会读取
{"red", "orange", "yellow", "green", "blue", "purple"}
该方法应返回列表
{"red","yellow","blue"}
我知道这是一个相当简单的问题,如果已经得到解答,请为我指出正确的方向。另外,我相信这些是逗号分隔的变量。到目前为止,我已经有了标题和扫描仪声明:
public static ArrayList<String>Skip(File file)
ArrayList<String> newList = new ArrayList<String>();
Scanner scanner = new scanner(file);
while(scanner.hasNextLine()){
*WHAT DO I DO HERE*
newList.add(____);
}
scanner.close;
}
return newList;
最佳答案
默认情况下,扫描程序使用空格作为分隔符,但您可以显式设置不同的分隔符。例如
scanner.useDelimiter(",");
要选择替代行,最简单的方法是在循环外部定义一个 boolean
变量,然后对其取反(false -> true
和 true -> false
) 每次循环。
boolean includeItem = true;
while (...) {
...
includeItem = !includeItem;
}
<小时/>
剧透警告
这是一些将它们组合在一起的代码,并且似乎可以满足您的需要:
public static List<String> alternateItemsFrom(File commaSeparatedFile)
throws FileNotFoundException {
List<String> results = new ArrayList<String>();
boolean includeItem = true;
try (Scanner scanner = new Scanner(commaSeparatedFile)) {
scanner.useDelimiter(",");
while (scanner.hasNext()) {
String item = scanner.next().trim();
if (includeItem) {
results.add(item);
}
includeItem = !includeItem;
}
}
return results;
}
另请注意:
当您为文件创建
Scanner
时,可能会抛出FileNotFoundException
。我需要在方法上声明该异常。尽管您可以在循环后使用
scanner.close()
关闭扫描器,但在 Java 7+ 中,有一种更好的方法,即所谓的 try-with -资源 block 。这可以保证即使在循环时发生异常,扫描仪也会关闭。我已重命名该方法和一些变量,以尝试更清楚地表达它们的意图。
关于java - 数组列表和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36348925/