2013-02-22 173 views
0

程序需要计算并显示指定的charector出现在文本文件中的次数。计数字母出现

目前总数为零。我不是如果我应该使用不同的循环,我也尝试使用'for'循环。

// Hold user input and sum 
String fileName; // Holds the name of the file 
String letter;  // Letter to search for in the file 
int total = 0;  // Holds the total number of characters in the file 


// Get the name of the file and character from the user 
fileName = JOptionPane.showInputDialog("Please enter the name of a file:"); 
letter = JOptionPane.showInputDialog("Please enter a letter contained in the string"); 


// Open the file for reading 
File file = new File(fileName);   
Scanner inputFile = new Scanner(file); // Declare new scanner object for file reading 


// Set accumulator to zero 
int count = 0; 

if (inputFile.nextLine().equalsIgnoreCase(letter)) {         

    count++;   // add letter occurrence 

    total += count; // add the letter occurrence to the total 
} 
+1

是每行只有一个字母? – RNJ 2013-02-22 09:47:13

+0

每一行都是一个单词,.txt是一个段落 – 2013-02-22 09:57:08

回答

5
BufferedReader reader = new BufferedReader(new FileReader("somefile.txt")); 
    int ch; 
    char charToSearch='a'; 
    int counter=0; 
    while((ch=reader.read()) != -1) { 
     if(charToSearch == (char)ch) { 
      counter++; 
     } 
    }; 
    reader.close(); 

    System.out.println(counter); 

I这有什么帮助?

+0

这个工程,只需调整大小写不敏感 谢谢! – 2013-02-22 10:26:11

0

这个答案假定您的文本文件中的每行只包含一个字母,就像您的问题所示。

你需要用你的if语句在一个循环中你目前只检查文件的第一行:

 while(inputFile.hasNext()) { 
     if (inputFile.nextLine().equalsIgnoreCase(letter)) {         

      count++;   // add letter occurrence 

      total += count; // add the letter occurrence to the total 
     } 
    } 

你也可以更换:

count++; 
total+= count; 

total++; 
+0

用包装的'while'循环更新,仍然不起作用,0次出现的字母 – 2013-02-22 09:54:53

+0

可以粘贴示例文本文件 – cowls 2013-02-22 09:57:40

0
String line="" 
while(inputFile.hasNext()) { 
    line = inputFile.nextLine(); 
    for(int i=0; i<line.length(); i++){ 
    if (line.charAt(i)== letter)          
     count++;   

} 
} 
1

有错误你code.Correct代码如下─

String fileName; // Holds the name of the file 
    String letter;  // Letter to search for in the file 

    // Get the name of the file and character from the user 
    fileName = "C:\\bin\\GWT.txt"; 
    letter = "X"; 


    // Open the file for reading 
    File file = new File(fileName);   
    Scanner inputFile = new Scanner(file); // Declare new scanner object for file reading 


    // Set accumulator to zero 
    int count = 0; 
    while(inputFile.hasNext()) { 
     if (inputFile.nextLine().toLowerCase().contains(letter.toLowercase())) { 
      count++;   // add letter occurrence 
     } 
    } 
    System.out.println(count); 
+0

此代码返回一个数字,但我认为该数字不正确... – 2013-02-22 10:13:11

+0

这也是区分大小写的 – 2013-02-22 10:14:00

+0

blnr,编辑上面的代码以进行不区分大小写的检查。您也可以参考以下内容 - http://stackoverflow.com/questions/5054995/how-to-replace-case-insensitive-literal-substrings-in-java – JRR 2013-02-22 10:34:40