2017-06-18 92 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)。參見編輯 –

相關問題