Java – Érettségi feladatok – 2005. október (Vigenère)

package e2005oktober;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class E2005oktober {

/* NetBeans: UTF-8 karakterkódolás az Output ablakban:
 https://juhaasztamaas.hu/inf/informatika-programozas/java/netbeans-alapok/ */
    public static void main(String[] args) throws IOException{
        // 1. feladat
        System.out.println("1. feladat");
        Scanner sc = new Scanner(System.in);
        System.out.println("Kérem, adjon meg egy max. 255 karakter hosszú szöveget!");
        String eredeti = sc.nextLine();
        System.out.println("------------------");
        System.out.println();

        // 2. feladat
        System.out.println("2. feladat");
        eredeti = eredeti.toUpperCase();

        // RegEx-szel nagyon egyszerűen lehet a problémát kezelni! :-)
        String nyiltSzoveg = eredeti.replaceAll("[^A-Z]", "");
        System.out.println("Az átalakítás megtörtént. :-)");
        System.out.println("------------------");
        System.out.println();

        // 3. feladat
        System.out.println("3. feladat");
        System.out.println(nyiltSzoveg);
        System.out.println("------------------");
        System.out.println();

        // 4. feladat
        System.out.println("4. feladat");
        System.out.println("Kérek egy 5 karakteres, nem üres kulcsszót!");
        String kulcsszo = sc.nextLine().toUpperCase();
        System.out.println("Átalakítás után a kulcsszó: " + kulcsszo);
        System.out.println("------------------");
        System.out.println();

        // 5. feladat
        System.out.println("5. feladat");
        String kulcsSzoveg = "";
        for (int i = 0; i < nyiltSzoveg.length() / kulcsszo.length(); i++) {
            kulcsSzoveg += kulcsszo;
        }
        for (int i = 0; i < nyiltSzoveg.length() % kulcsszo.length(); i++) {
            kulcsSzoveg += kulcsszo.charAt(i);
        }
        System.out.println("A kulcsszöveg: " + kulcsSzoveg);
        System.out.println("------------------");
        System.out.println();
        
        // 6. feladat
        System.out.println("6. feladat");
        // scF- scannerFile
        Scanner scF = new Scanner(new FileReader("Vtabla.dat"));
        String sor="";
        char[][] tabla = new char[26][26];
        for (int i = 0; i < 26; i++) {
            sor = scF.nextLine();
            for (int j = 0; j < 26; j++) {
               tabla[i][j] = sor.charAt(j);
            }
        }    
//        // A tabla létrejöttének ellenőrzése
//        for (int i = 0; i < 26; i++) {
//            for (int j = 0; j < 26; j++) {
//                System.out.print(tabla[i][j]);
//            }
//            System.out.println();
//        }
        String kodoltSzoveg="";
        for (int i = 0; i < nyiltSzoveg.length(); i++) {
            int x = (int)nyiltSzoveg.charAt(i);
            int y = (int)kulcsSzoveg.charAt(i);
            kodoltSzoveg += tabla[x-65][y-65];
        }
        System.out.println(kodoltSzoveg);
        System.out.println("------------------");
        System.out.println();
        
        // 7. feladat
        System.out.println("7. feladat");
        FileWriter fw = new FileWriter("kodolt.dat");
        PrintWriter pw = new PrintWriter(fw);
        pw.print(kodoltSzoveg);
        pw.close();fw.close();sc.close();
        System.out.println("A kódolt szöveg kiírva a kodolt.dat fájlba.");
    }
}