Ahoj,
Dostal jsem tento kód a mám změnit posun z pevně dané hodnoty na proměnou,
kterou si uživatel zvolí sám. Navíc se celá šifra musí zapsat do souboru.
Teď řeším ten posun, vždycky po zadání čísla se to nehne dál. Označil
jsem poznámkou co zrovna řeším.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* andopen the template in the editor.
*/
package caesar;
import java.io.*;
import java.util.Scanner;
public class Caesar {
// Scanner scan = new Scanner(System.in);
// int posun = scan.nextInt();
// int posun = 3;
public String kod(String a) throws IOException {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < a.length(); i++) {
char znak = a.charAt(i);
if (znak >= 'A' && znak <= 'Z') {
int t1 = znak - 'A' + posun;
t1 = t1 % 26;
sb.append((char) (t1 + 'A'));
} elseif (znak >= 'a' && znak <= 'z') {
int t1 = znak - 'a' + posun;
t1 = t1 % 26;
sb.append((char) (t1 + 'a'));
}
}
return sb.toString();
}
public String decrypt(String s) throws IOException {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char t = s.charAt(i);
if (t >= 'A' && t <= 'Z') {
int t1 = t - 'A' - posun;
if (t1 < 0) {
t1 = 26 + t1;
}
sb.append((char) (t1 + 'A'));
} elseif (t >= 'a' && t <= 'z') {
int t1 = t - 'a' - posun;
if (t1 < 0) {
t1 = 26 + t1;
}
sb.append((char) (t1 + 'a'));
}
}
return sb.toString();
}
public static String readFile(String filename) {
String content = null;
File file = new File("sifra.txt"); //for ex foo.txt
try {
FileReader reader = new FileReader(file);
char[] chars = new char[(int) file.length()];
reader.read(chars);
content = new String(chars);
reader.close();
} catch (IOException e) {
e.printStackTrace(System.out);
}
return content;
}
public static void main(String[] args) {
try {
System.out.println("Caesarova šifra");
BufferedReader zprava;
String text, zakodovany, dekodovany;
// System.out.print("Zadejte posun: ");
// Scanner scan = new Scanner(System.in);
// int shift = scan.nextInt();
System.out.println("Vložte kod text který chcete zašifrovat:");
zprava = new BufferedReader(new InputStreamReader(System.in));
text = zprava.readLine();
Caesar c = new Caesar();
zakodovany = c.kod(text);
System.out.println("Encrypted text :" + zakodovany);
dekodovany = c.decrypt(zakodovany);
System.out.println("Derypted text :" + dekodovany);
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.