Membaca file dan Menghitung jumlah karakter, Angka, dan operator di Java

Sore gan, saya bantu tugas temen kuliah saya membuat aplikasi java console untuk membaca file dan menghitung jumlah karakter yang ada di dalamnya
langsung aje nih


 import java.io.BufferedReader;  
 import java.io.FileNotFoundException;  
 import java.io.FileReader;  
 import java.io.PrintWriter;  
 public class compiler{  
   private static final int JUMLAH_KARAKTER = 256;  
   private static int[] total_per_karakter = new int[JUMLAH_KARAKTER];  
   public static void main(String args[]) throws FileNotFoundException {  
     PrintWriter output = new PrintWriter("output.txt");  
     String kata = null;  
     try (BufferedReader buffer = new BufferedReader(new FileReader("input.txt"))) {  
       String sCurrentLine;  
       while ((sCurrentLine = buffer.readLine()) != null) {  
         kata = sCurrentLine;  
         kata = kata.toLowerCase();  
       }  
     } catch (Exception e) {  
     }  
     // inisialisasikan setiap karakter berjumlah 0 buah   
     for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       total_per_karakter[i] = 0;  
     }  
     // hitung jumlah setiap karakter  
     int kata_len = kata.length();  
     for (int i = 0; i < kata_len; i++) {  
       total_per_karakter[(int) kata.charAt(i)]++;  
     }  
     // tampilkan jumlah setiap karakter  
     System.out.println();  
     output.println("VARIABLE");  
     char cTemp;  
     for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       if (total_per_karakter[i] > 0) {  
         if (((char) i >= 'a' && (char) i <= 'z')) {  
           cTemp = (char) i;  
 //          System.out.println(cTemp + " : " + total_per_karakter[i]);  
           output.println(cTemp + " : " + total_per_karakter[i]);  
         }  
       }  
     }  
     output.println("DIGIT");  
     for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       if (total_per_karakter[i] > 0) {  
         if ((char) i >= '0' && (char) i <= '9') {  
           //System.out.println((char) i + " : " + total_per_karakter[i]);  
           output.println((char) i + " : " + total_per_karakter[i]);  
         }  
       }  
     }  
     output.println("OPERATOR");  
     for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       if (total_per_karakter[i] > 0) {  
         if (((char) i >= '(' && (char) i <= '/') || ((char) i >= '<' && (char) i <= '>')) {  
           //System.out.println((char) i + " : " + total_per_karakter[i]);  
           output.println((char) i + " : " + total_per_karakter[i]);  
         }  
       }  
     }  
     output.close();  
   }  
 }  

keterangan :

1. jika kalian lihat setelah class, ada variable global yang menunjukan jumlah max karakter
private static final int JUMLAH_KARAKTER = 256;  
private static int[] total_per_karakter = new int[JUMLAH_KARAKTER]; 
itu saya ambil mengikuti jumlah fungsi char yang kita gunakan sesuai ASCII

2. kemudian untuk membaca file nya saya menggunakan fungsi FilleReader
     String kata = null;  
     try (BufferedReader buffer = new BufferedReader(new FileReader("input.txt"))) {  
       String sCurrentLine;  
       while ((sCurrentLine = buffer.readLine()) != null) {  
         kata = sCurrentLine;  
         kata = kata.toLowerCase();  
       }  
     } catch (Exception e) {  
     }  
kemudian variabel kata berfungsi menampung kalimat yang ada pada file input.txt

3. kemudian variabel tersebut dimasukan kedalam indeks total_per_karakter tapi sebelumnya total perkarakter di inisialisasi terlebih dahulu untuk memastikan dia memulai dari indeks 0
// inisialisasikan setiap karakter berjumlah 0 buah   
     for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       total_per_karakter[i] = 0;  
     }  
     // hitung jumlah setiap karakter  
     int kata_len = kata.length();  
     for (int i = 0; i < kata_len; i++) {  
       total_per_karakter[(int) kata.charAt(i)]++;  
     }  


 dan fungsi charAt untuk memisahkan string menjadi char per indeks



4. dan terakhir hanya cukup melakukan perulangan dengan for dan disesuaikan dengan kondisi yang diinginkan.

for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       if (total_per_karakter[i] > 0) {  
         if (((char) i >= 'a' && (char) i <= 'z')) {  
           cTemp = (char) i;  
 //          System.out.println(cTemp + " : " + total_per_karakter[i]);  
           output.println(cTemp + " : " + total_per_karakter[i]);  
         }  
       }  
     }  
     output.println("DIGIT");  
     for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       if (total_per_karakter[i] > 0) {  
         if ((char) i >= '0' && (char) i <= '9') {  
           //System.out.println((char) i + " : " + total_per_karakter[i]);  
           output.println((char) i + " : " + total_per_karakter[i]);  
         }  
       }  
     }  
     output.println("OPERATOR");  
     for (int i = 0; i < JUMLAH_KARAKTER; i++) {  
       if (total_per_karakter[i] > 0) {  
         if (((char) i >= '(' && (char) i <= '/') || ((char) i >= '<' && (char) i <= '>')) {  
           //System.out.println((char) i + " : " + total_per_karakter[i]);  
           output.println((char) i + " : " + total_per_karakter[i]);  
         }  
       }  
     }


tambahan jika ingin di jadikan dalam bentuk file cukup menggunakan PrintWritter sesuai contoh di atas. selesai :D
Abdu Rachman. Diberdayakan oleh Blogger.