szyfr gadery

0

Napisałam szyfr gadery poluki niestety ciągle coś nie działa i szyfr xle szyfruje, pomoże ktoś?


public class GP {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
         Scanner s = new Scanner(System.in);
         char alphabet[] = {'G','A','D','E','R','Y','P','O','L','U','K','I'};
         System.out.println("Podaj text do zaszyfrowania");
         String text = s.nextLine();
         char[] Crypt = text.toCharArray();
         String code = "";
         for (int i = 0; i < text.length(); i++) {
            char znak = text.charAt(i);
            for (int j = 0; j < alphabet.length; j++) {
                if(alphabet[j] == Crypt[i]){
                    if (j % 2 == 0) {
                        Crypt[i] =  alphabet[j + 1];
                        code += Crypt[i];
                    }
                    else {
                        Crypt[i] =  alphabet[j - 1];
                        code += Crypt[i];
                    }
            
                    }    
                else{
                    code += i;
                }
            
            }
         }
         
          System.out.print(code);
    }
    
}


0

Ale z czym Ci pomóc jak nie wiadomo nic poza tym, że

ciągle coś nie działa i szyfr xle szyfruje

Powiedz co nie działa albo chociaż co powinno być na wyjściu dla konkretnego wejścia.
Polecam odpalić debugger (ostatnio pisałeś, że już działa) albo jak nie umiesz to dodać sobie printy - wypisywać i analizować po kawałku.

0

tak debuguje i ten zapis jest dalej zły :
if(alphabet[j] == Crypt[i]){

ten zapis ma sprawdzić, czy znak z textu wprowadzonego przez usera jest w alphabecie gadery poluki
debugując widze, ze nie ma bo za kazdym razem przechodzi do else - else{
code += i;
}

a wpisuje text: anna... wiec a (pierwszy obieg petli) jest w alfabecie gaderypoluki

anna na wyjsciu powinno dawac - GNNG

0

Kiedyś popełniłem coś takiego w C#. Trzym, może Ci się przyda:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Gaderypoluki
{
    public class Gaderypoluki
    {
        private string[] encryptionKey;

        public Gaderypoluki(string key)
            => encryptionKey = SplitKey(key.ToUpper());

        public string Encrypt(string plain)
        {
            var builder = new StringBuilder(plain.ToUpper());
            for (int i = 0; i < builder.Length; i++)
            {
                foreach (string pair in encryptionKey)
                {
                    if (builder[i] == pair[0])
                    {
                        builder.Remove(i, 1);
                        builder.Insert(i, pair[1]);
                        break;
                    }
                    else if (builder[i] == pair[1])
                    {
                        builder.Remove(i, 1);
                        builder.Insert(i, pair[0]);
                        break;
                    }
                }
            }
            return builder.ToString();
        }

        public string Decrypt(string encrypted)
            => Encrypt(encrypted);

        private string[] SplitKey(string key)
        {
            var split = key.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
            if (split.Any(s => s.Length != 2))
                throw new ArgumentException("Nieprawidłowa budowa klucza szyfrującego.", nameof(key));
            return split;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var gad = new Gaderypoluki("GA-DE-RY-PO-LU-KI");
                var encrypted = gad.Encrypt("grzesiek51114");
                Console.WriteLine(encrypted);
                Console.WriteLine(gad.Decrypt(encrypted));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }
}

Jest co prawda specyficzny dla C# StringBuilder ale w sumie działania na nim wyglądają tak jak na zwykłych stringach więc przełożyć to na Javę nie będzie trudno.

1 użytkowników online, w tym zalogowanych: 0, gości: 1