我正在开展一个项目,我正在努力计算
1)单词数量。 2)文本文件中的行数。
我的问题是我无法弄清楚如何检测文件何时进入下一行,这样我就可以正确地增加行数。基本上如果next不是空格增量字,如果next是新行,则增加行。我该怎么做?谢谢!
public static void readFile(Scanner f) {
int words = 0;
int lines = 0;
while (f.hasNext()) {
if (f.next().equals("\n")) {
lines++;
} else if (!(f.next().equals(" "))) {
words++;
}
}
System.out.println("Total number of words: " + words);
System.out.println("Total number of lines: " + lines);
}
答案 0 :(得分:0)
你必须使用InputStream吗? (是)最好使用传入了InputStreamReader的BufferedReader,这样你就可以逐行读取文件并逐步增加。
numLines = 0;
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
String line;
while ((line = br.readLine()) != null)
{
numLines++;
// process the line.
}
}
然后计算单词,使用查找空格的正则表达式拆分字符串。然后myStringArray = MyString.Split(MyRegexPattern);
将返回所有单词的String[]
。然后你要做的就是numWords += myStringArray.length();
答案 1 :(得分:0)
试试这个:
this
答案 2 :(得分:0)
请尝试以下操作:
public static void readFile(Scanner f) {
int words = 0;
int lines = 0;
while (f.hasNextLine()) {
String line = f.nextLine();
String[] arr = line.split("\\s");
words += arr.length;
lines++;
}
System.out.println("Total number of words: " + words);
System.out.println("Total number of lines: " + lines);
}
答案 3 :(得分:0)
您可以使用InputStreamReader创建一个bufferedreader,它可以逐行读取文件:
int amountOfLines = 0;
try {BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))} catch (Exception e) {e.printStackTrace();}
String line;
while ((line = br.readLine()) != null{
numLines++;
// process the line.
}
然后,您可以使用split(String)方法分隔每个部分