Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java arraylist拆分(“空白”)并计算字数_Java - Fatal编程技术网

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;
}