hjælp til en decrypterings opgave
Hej :)Jeg er meget ny til programmering og skal lave en opgave om decryptering som jeg simpelhen ikke kan løse.
Opgaven går ud på at indlæse en krypteret tekst som er krypteret med ceasar cipher, og finde hyppigheden af alle bogstaverne i teksten. Denne hyppighed skal så sammenlignes med den generalle hyppighed af bogstaver i det engelsk alfabet. Dette skal gøres ved at lægge de to hyppigheder i en arrayliste, sortere og sammenligne, og så på en eller anden måde finde nøglen som skal bruges til at dekryptere.
Koden jeg har indtil videre:
import java.io.*;
import java.util.*;
public class Pair
private double i;
private String s;
public Pair(){}
public Pair(double i,String s){
this.i = i;
this.s = s;
}
public static void main(String[] args){
Comparator<Pair> comp = new Pair();
TreeMap<Pair,java lang.String> map = new TreeMap<Pair,String>(comp);
map.put(new Pair(8.167,"a"));
map.put(new Pair(1.492,"b"));
map.put(new Pair(2.782,"c"));
map.put(new Pair(4.253,"d"));
map.put(new Pair(12.702,"e"));
map.put(new Pair(2.228,"f"));
map.put(new Pair(2.015,"g"));
map.put(new Pair(6.094,"h"));
map.put(new Pair(6.966,"i"));
map.put(new Pair(0.153,"j"));
map.put(new Pair(0.772,"k"));
map.put(new Pair(4.025,"l"));
map.put(new Pair(2.406,"m"));
map.put(new Pair(6.749,"n"));
map.put(new Pair(7.507,"o"));
map.put(new Pair(1.929,"p"));
map.put(new Pair(0.095,"q"));
map.put(new Pair(5.987,"r"));
map.put(new Pair(6.327,"s"));
map.put(new Pair(9.056,"t"));
map.put(new Pair(2.758,"u"));
map.put(new Pair(0.978,"v"));
map.put(new Pair(2.360,"w"));
map.put(new Pair(0.150,"x"));
map.put(new Pair(1.974,"y"));
map.put(new Pair(0.074,"z"));
System.out.println(map);
System.out.println("");
String bogstaver = "abcdefghijklmnopqrstuvwxyz";
String inputFile = args[0];
Scanner sc;
String inputText = "";
try {
sc = new Scanner(new File(inputFile));
while(sc.hasNext()) {
inputText = inputText + sc.nextLine();
}
} catch (FileNotFoundException e) {
System.out.println("Kunne ikke finde filen");
}
Scanner sc1 = new Scanner(System.in);
String temp = "";
HashMap<String,Integer> map1 = new HashMap<String,Integer>();
int i=0,j=0,hyppighed=0;
for(tekst.charAt(i); i < tekst.length(); i++)
if(tekst.charAt(i) != bogstaver.charAt(j))
j++;
else
hyppighed++;
temp = (temp + tekst.charAt(i));
map1.put(temp, hyppighed);
System.out.println(map1)
ArrayList<Pair> pairs = new ArrayList<Pair>();
for(double i:map2.keySet())
pairs.add(new Pair(i,map2.get(i)));
Collections.sort(pairs);
for(Pair p:pairs)
System.out.println(p);
}
public double compare(Pair a,Pair b){
return a.compareTo(b);
}
public String toString(){
return i+": "+s;
}
}
Please help! Alle ideer til hvordan jeg får rettet det jeg har lavet og hvordan jeg kommer videre, vil jeg være taknemmelig for :)
