我想計算某個字符串出現在文本文件(.txt)中的次數,到目前爲止,我得到FileReader的工作(它讀取文件,並且我可以將文件中的文本輸出到控制檯)。我想要知道的是檢查一個字符串(由用戶輸入)是否存在於文本文件中。我到目前爲止是這樣的:(?)計算字符串出現在文件中的次數
import java.io.*;
import java.util.Scanner;
public class Assignment2 {
String fileName = "test.txt";
String line = null;
int counter = 0;
public String getUserInput() {
String userInput;
Scanner userInputScanner = new Scanner(System.in);
userInput = userInputScanner.nextLine();
return userInput;
}
public String returnUserInput() {
String userInput = getUserInput();
return userInput;
}
public void readFile() {
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
while (line.indexOf(word, indexOfWord) != -1) {
indexOfWord += word.length();
counter += 1;
}
}
bufferedReader.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Assignment2 test = new Assignment2();
test.readFile();
}
}
請告訴我發生的事情是,我可以通過文件不循環,當我在for循環中運行的程序,它被卡住,它只是不斷運行沒有錯誤,但它什麼都不做。我知道我的問題是與for循環(line.length()將無法正常工作,因爲緩衝讀取器一次讀取一行...我真正想要的是獲取字符串的數量文件)。我在檢查用戶輸入時也遇到了麻煩(我想忽略這些字母的大小寫,但是我不能用.contains()來做到這一點,並且我不能想到另一種方法來檢查該行是否包含用戶輸入) 。
另外,我的過程是正確的,還是我這樣做效率不高?我必須檢查一個3000字的文件。
什麼是你的問題?問題是什麼?請修改您的問題以包含確切的錯誤和確切的預期行爲。 –
聽起來像是一個家庭作業問題。你不應該直接在這裏提出這樣的問題。如果只有3000個字,您可以簡單地將整個文件讀入內存並連接行(StringBuilder),然後使用for循環計算出現次數。 –
如果您正在尋找其他方法,您可以搜索其他關於[計算文件中特定字符串的出現次數]的問題(http://stackoverflow.com/questions/9689860/counting-the-occurence-of -a-特定字符串-IN-A-文件)。 – azurefrog