2017-06-18 56 views
0

我知道这个问题以前可能已经被问过了,但是在浏览了其他问题之后,我找不到解决我的问题的方法。 所以我试图计算某个字符出现在.txt文件中的次数。我的代码能够计算出一个字符出现的次数,但它不会忽略该字母的大小写,所以当它输出15'a'而不是13'a'时,因为在我的.txt中有两个大写字母A文件。Java计算一个字符出现在一个文件中的次数

这里是我的代码:

import java.io.*; 
import java.util.ArrayList; 
import java.util.Scanner; 
public class Program6 { 
ArrayList<Integer> countOfLetters; 
int count(String filename, char ch) 
{ 
System.out.println(ch); 
File fin = new File(filename);  
    Scanner scan = null;  
    try{ 

    } 
    catch(Exception e) 
    { 

    } 
    return 0; 
} 
void writeCountResult (String filename) 
{ 
    File fin = new File(filename);  
} 
public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 
    Program6 program6 = new Program6(); 
    String filename = "xanadu.txt"; 
    program6.countOfLetters = new ArrayList<Integer>(); 
    for(int i=65;i<91;i++) 
    { 
     int num = program6.count(filename,(char)i); 
     program6.countOfLetters.add(num); 
    } 
    program6.writeCountResult("output.txt"); 

    //This code counts the number of times "a" appears in the file but not "A" BufferedReader reader = new BufferedReader(new     FileReader("xanadu.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); 
} 

} 

第2部分:现在写的另一种方法来写上面的字母的三个罪名在一个叫做“output.txt的”文件。使用以下方法头:void writeCountResult(String filename)。正如你可以看到这已经在我的代码中,但我不知道下一步去哪里计算字符到另一个txt文件的output.txt。

回答

3

修改您的if语句来检查charToSearch是否等于字符的大写版本。

if (charToSearch == Character.toLowerCase((char)ch) || charToSearch == Character.toUpperCase((char)ch) { 
       counter++; 
} 
+1

也许'如果(charToSearch == Character.toUpperCase((char)的CH ||(charToSearch == Character.toLowerCase((char)的CH)'是一个更强大的方式,因为其他方式的功能赢得了如果你只输入'A'而不是'a' – KyrSt

+0

我添加了代码,它仍然给出相同的输出13 – New2AllThis

+0

尝试使用Character.compare(char x,char y)。参见编辑 –

相关问题