import java.io.*;
import java.io.PrintWriter;
public class FrequencyAnalysis
{
private int[] frequency;
private String text;
public FrequencyAnalysis(String str)
{
text = str.toUpperCase(); // has ascii value 65-90
frequency = new int[26]; // counting array
}
// this method is complete
public void findFrequency()
{
for(int x = 65; x < 91; x++)
{
for(int y = 0; y < text.length(); y++)
{
if(text.substring(y, y+1).equals(Character.toString((char)x)) )
frequency[x - 65]++;
}
}
}
public void printToScreen()
{
System.out.printf("%15s%15s%n", "Frequency", "Percent");
for(int x = 65; x < 91; x++)
{
String letter = Character.toString((char)x);
double percentage = frequency[x - 65] / text.length();
System.out.printf("%3s%10d%15.1f%n", letter, frequency[x-65], percentage);
}
}
public void printToFile(PrintWriter out)
{
out.printf("%15s%15s%n", "Frequency", "Percent");
for(int x = 65; x < 91; x++)
{
String letter = Character.toString((char)x);
double percentage = frequency[x - 65] / text.length();
out.printf("%3s%10d%15.1f%n", letter, frequency[x-65], percentage);
}
}
}
here is the tester class
import java.util.*;
import java.io.*;
public class FrequencyAnalysisTester
{
public static void main(String args[]) throws IOException
{
Scanner input = new Scanner(new File("plaintext.txt"));
PrintWriter output = new PrintWriter("plaintextfreq.txt");
String message = "";
while (input.hasNext()) {
message += input.next();
}
input.close();
FrequencyAnalysis fa = new FrequencyAnalysis(message);
fa.findFrequency();
fa.printToScreen();
fa.printToFile(output);
output.close();
}
}

New Topic/Question
Reply



MultiQuote




|