java如何查找ArrayList中的项目数量?
我目前正在处理ProjectEuler22,提示要求您从一个文件中读取5000多个名称并对它们进行排序,然后给它们赋值,尽管这不是我遇到的问题。我将名称读入ArrayList,但现在我想查看ArrayList中有多少项。我试着把名字打印出来。大小();但它只是打印出零。我想这是因为只有一排?但是当我打印出名字的时候,我就知道了。获取(数字);当number是我选择的任意数字时,它会打印出应该在该框中的名称。如何查看我的ArrayList中有多少项?我知道这与project euler没有任何关系,但我只是想学习如何使用它以供将来参考。我试着在网上查找如何做,但没能让它工作。有人能告诉我如何解释代码吗?顺便说一下,这是我的代码:
import java.io.File;
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class main{
public static void main(String[] args){
String name;
int row;
int count=0;
File filepath=new File("../names.txt");
List<String> names=new ArrayList<String>();
try{
Scanner in=new Scanner(filepath);
name=in.nextLine();
while(in.hasNext()){
names=Arrays.asList(name.split("\\s*,\\s*"));
}
}
catch(Exception e){
}
System.out.println(names.size());
}
}
# 1 楼答案
你需要名字。添加到循环中,而不是赋值语句中
名字。添加(数组…)
# 2 楼答案
我认为您有几个问题,但主要问题是您使用的正则表达式与您想要的方式不匹配。假设一行中有一个多个名称的文本文件,可能有多行,这将起作用,而且简单得多:
如果需要,可以更改分割值,但要保持简单。 如果名称以逗号分隔,只需将
split(" ")
更改为split(",")
此外,在进入while循环之前,您正在执行一个scanner.nextLine()
,丢失了文件中的第一行。最后,请注意names.addAll(namesList)
,它确保您存储在一行中找到的所有名称# 3 楼答案
因为列表名称就是结果,所以应该在结果的下一行添加新名称。我认为下面的代码可能有效