import java.util.Scanner;
import java.io.File;

public class LetterFreqArr {
    private static final String LETTERS = "abcdefghijklmnopqrstuvwxyz";
	private int[] counts;
	private int numLetters;

	public LetterFreqArr(String fileName) throws java.io.FileNotFoundException {
	    this.counts = new int[LetterFreqArr.LETTERS.length()];
	    this.numLetters = 0;
	    
	    Scanner infile = new Scanner(new File(fileName));
	    while (infile.hasNext()) {
	        String nextWord = infile.next();
	        for (int c = 0; c < nextWord.length(); c++) {
	            char ch = nextWord.charAt(c);
	            int index = LetterFreqArr.LETTERS.indexOf(Character.toLowerCase(ch));
	            if (index >= 0) {
	                this.counts[index]++;
	                this.numLetters++;
	            }
	        }
	    }
	}
	   
    public int getCount(char ch) {
	    int index = LetterFreqArr.LETTERS.indexOf(Character.toLowerCase(ch));
	    if (index >= 0) {
	        return this.counts[index];
	    }
	    else {
	        return 0;
	    }
	}
	
    public double getPercentage(char ch) {
	    int index = LetterFreqArr.LETTERS.indexOf(Character.toLowerCase(ch));
	    if (index >= 0 && this.numLetters > 0) {
	        double percent = 100.0*this.counts[index]/this.numLetters;
	        return Math.round(10.0*percent)/10.0;
	    }
	    else {
	        return 0.0;
	    }
	}	
	
	public void showCounts() {
	    for (int i = 0; i < LetterFreqArr.LETTERS.length(); i++) {
	        char ch = LetterFreqArr.LETTERS.charAt(i);
	        System.out.println(ch + ": " + this.getCount(ch) + "\t(" +
	                           this.getPercentage(ch) + "%)");
	    }
	}
}
