Java 方法对文件中的字进行计数
嗨,伙计们,我正在写一个计算文件中单词的方法,但显然代码中有一个错误,这个方法不起作用。这是我的密码:Java 方法对文件中的字进行计数,java,nio,stringtokenizer,Java,Nio,Stringtokenizer,嗨,伙计们,我正在写一个计算文件中单词的方法,但显然代码中有一个错误,这个方法不起作用。这是我的密码: public class Main2 { public static void main(String[] args) { count("/home/bruno/Desktop/WAR_JEE_S_09_Podstawy/MojPlik"); } static int count(String fileName){ Path path =
public class Main2 {
public static void main(String[] args) {
count("/home/bruno/Desktop/WAR_JEE_S_09_Podstawy/MojPlik");
}
static int count(String fileName){
Path path = Paths.get(fileName);
int ilosc = 0;
String wyjscie = "";
try {
for (String charakter : Files.readAllLines(path)){
wyjscie += charakter;
}
StringTokenizer token = new StringTokenizer(wyjscie," \n");
} catch (IOException e) {
e.printStackTrace();
}
return ilosc;
}
}
文件路径正确,以下是文件内容
test test
test
test
在我调用main中的方法后,它将不显示任何内容。错误在哪里?您的代码将计算文件中的行数。。。好吧,如果你继续这个想法
现在,您的代码只是读取行,将它们放入一个大字符串中,然后对该操作的结果执行任何操作。你有一个整型计数器。。。谁被初始化为0,然后在没有使用/增加的情况下返回!除非我弄错了,readAllLines()
最终会自动删除换行符,所以总体而言,您的代码毫无用处
要计算单词数,您必须将每一行和(例如)拆分为一行字符串作为空格。这会给你一个数字。然后把这些数字加起来
长话短说:这里真正的答案是你应该退后一步。不要只写代码,假设这会神奇地解决问题。相反:首先,想出解决问题的策略(算法)。用钢笔和纸写下算法的想法。然后在一些样本数据上“手动”运行算法。最后,将算法转换为代码。此外,除了您没有输出任何内容之外,您的逻辑后面还有一个小错误。为了让你的代码正常工作,我在这里和那里做了一些更改
s.trim()
删除任何前导空格和行间空格,并trimmed.split(\\s+”)
在任何空格字符处拆分字符串,包括空格
static int count(String fileName) throws IOException {
Path path = Paths.get(fileName);
int count = 0;
List<String> lines = Files.readAllLines(path);
for (String s : lines) {
String trimmed = s.trim();
count += trimmed.isEmpty() ? 0 : trimmed.split("\\s+").length;
}
return count;
}
static int count(字符串文件名)引发IOException{
Path Path=Path.get(文件名);
整数计数=0;
列表行=文件。readAllLines(路径);
用于(字符串s:行){
字符串修剪=s.trim();
count+=trimmed.isEmpty()?0:trimmed.split(\\s+)。长度;
}
返回计数;
}
以下是在Java 8中使用函数式编程的代码。这也是使用Stream
的flatMap
的常见示例-可用于计算或打印文件中的字
long n = Files.lines(Paths.get("test.txt"))
.flatMap(s -> Stream.of(s.split("\\s+")))
.count();
System.out.println("No. of words: " + n);
注意
文件。行(路径)
返回一个流
,其中包含来自输入文件的行。此方法类似于readAllLines
,但返回的是流而不是列表您没有向控制台打印任何内容,那么您为什么希望有任何输出?您的代码的哪一部分应该输出某些内容?噢,对不起,伙计们ilosc
从未分配结果值。另外,你好像什么都没用你的柜台。因此,这里有几个问题:-)。