Java arraylist拆分(“空白”)并计算字数
因此,我想计算我的Java arraylist拆分(“空白”)并计算字数,java,Java,因此,我想计算我的ArrayList中的字数,目前我从文件中读取行并将这些行保存到ArrayList 该文件已被删除 word definition a alpha b bravo c charlie d delta e echo f foxtrot 因此,当我执行arraylist.size()时,它会打印7。但是我想数一数单词的数量 我的代码: import java.io.BufferedReader; imp
ArrayList
中的字数,目前我从文件中读取行并将这些行保存到ArrayList
该文件已被删除
word definition
a alpha
b bravo
c charlie
d delta
e echo
f foxtrot
因此,当我执行arraylist.size()时,它会打印7。但是我想数一数单词的数量
我的代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class WarmUp {
public static void main(String[] args) {
BufferedReader br = null;
String line = null;
ArrayList<String> elements = new ArrayList<String>();
try {
br = new BufferedReader(new FileReader("src/dictionary.txt"));
while((line=br.readLine()) != null) {
elements.add(line);
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
公开课热身{
公共静态void main(字符串[]args){
BufferedReader br=null;
字符串行=null;
ArrayList元素=新的ArrayList();
试一试{
br=新的BufferedReader(新的文件阅读器(“src/dictionary.txt”);
而((line=br.readLine())!=null){
元素。添加(行);
}
}
捕获(IOE异常){
e、 printStackTrace();
}
}
}
我想我可以用拆分法
所以我想这就是方法
ArrayList<String> moreElements = new ArrayList<String>();
for(int i=0; i < elements.size(); i++) {
String e = elements.get(i);
moreElements.addAll(e.split(" "));
}
ArrayList morelements=new ArrayList();
对于(int i=0;i
然后调用morelements.size()
但是我做错了…该方法需要一个列表,但返回一个数组。必须使用将数组转换为列表。
您还必须按多个空格分割。
更改为:
moreElements.addAll(Arrays.asList(e.split("\\s+")));
如果您使用Java 8或更高版本,您可以使用(假设您的列表名为
元素
):
带循环的解决方案:
int count = 0;
for(String line : elements) {
String[] tmp = line.split("\\s+"); //split on one or more spaces
count += tmp.length;
}
您认为可行的解决方案有什么问题吗?您没有关闭BufferedReader:
br.close()
首先打印e.split
的结果,然后查看您得到的结果。split(\\s+”)
这表示要在一个或多个空间上拆分,您只在一个空间上拆分,正如Pannu所述
int count = 0;
for(String line : elements) {
String[] tmp = line.split("\\s+"); //split on one or more spaces
count += tmp.length;
}