我正在尝试构建一个程序来接收文件并输出文件中的字数。当一切都在一个完整的段落下时,它可以完美地工作。但是,当有多个段落时,它不会考虑新段落的第一个单词。例如,如果一个文件读取“我的名字是约翰”,程序将输出“4 个单词”。但是,如果文件读取“我的名字是约翰”,每个单词都是一个新段落,程序将输出“1 个单词”。我知道这一定与我的 if 语句有关,但我假设在新段落之前有空格会考虑新段落中的第一个单词。这是我的一般代码:
import java.io.*;
public class HelloWorld
{
public static void main(String[]args)
{
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("health.txt");
// Use DataInputStream to read binary NOT text.
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
int word2 =0;
int word3 =0;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
;
int wordLength = strLine.length();
System.out.println(strLine);
for(int i = 0 ; i < wordLength -1 ; i++)
{
Character a = strLine.charAt(i);
Character b= strLine.charAt(i + 1);
**if(a == ' ' && b != '.' &&b != '?' && b != '!' && b != ' ' )**
{
word2++;
//doesnt take into account 1st character of new paragraph
}
}
word3 = word2 + 1;
}
System.out.println("There are " + word3 + " "
+ "words in your file.");
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}
我尝试过调整多个团队的 if 语句,但似乎没有什么不同。有谁知道我在哪里搞砸了?
我是一个相当新的用户,几天前问了一个类似的问题,有人指责我对用户要求太多,所以希望这能缩小我的问题范围。我真的很困惑为什么它不考虑新段落的第一个单词。如果您需要更多信息,请告诉我。谢谢!!