java - 如何扫描列表
问题描述
我正在尝试在 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
将不起作用,因为您i
为每个单独值中的多个单词分配相同的a
值......这将导致仅将扫描字符串中的最后一个值分配给列表的该索引
如果您尝试将列表中的所有单词拆分为一个新列表,那么您实际上需要创建并将值附加到单独的列表对象(不要修改您的参数,并且没有具有副作用的方法)
推荐阅读
- node.js - 如何解决代码更改未反映在 PM2 中的问题?
- amazon - Amazon Seller Central API::GetOrders 在使用 OrderStatuses 查询参数调用时返回不正确的订单
- java - 安装黑名单应用时如何阻止应用访问互联网
- amazon-web-services - 删除消息时 SQS 轮询失败
- c# - .Net 不在 SOAP 中序列化枚举
- jmeter - 打开jmeter时显示白屏,任何人都可以帮助解决这个错误
- python - 如何防止标签编码器将 y 列添加到 X numpy.array
- python - 如何仅在调用 django python 时在后台运行函数?
- azure-devops - 如何使用在组织级别安装的扩展找到 Azure DevOps 项目
- c# - 如果存在 UseIdentityServer,是否需要 AddAuthentication 和 AddAuthorization?