Avatar
Mr.netBean
Člen
Avatar
Mr.netBean:

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
 * and open 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'));
            } else if (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'));
            } else if (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());
        }
    }
}
Editováno 21.12.2014 23:00
 
Odpovědět 21.12.2014 22:58
Avatar
Mr.netBean
Člen
Avatar
Odpovídá na Mr.netBean
Mr.netBean:

Sakryš, koukám na forum Pythona, ale chtěl jsem to napsat do Javy, za to se omlouvám. Může to admin přesměrovat ?

 
Nahoru Odpovědět 22.12.2014 0:48
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.

Zobrazeno 2 zpráv z 2.